【问题标题】:IllegalStateException while using nested DialogFragments with Navigation Library使用带有导航库的嵌套 DialogFragments 时出现 IllegalStateException
【发布时间】:2020-02-24 20:43:20
【问题描述】:

我正在使用导航库 (2.2.0-rc04),并且我有两个 DialogFragment。第一个是 A,从MainFragment 打开。第二个是B,它只是A打开的确认警告对话框。以下是相关导航XML的整体结构:

<navigation app:startDestination="@id/mainFragment" ...>

    <fragment android:id="@+id/mainFragment" ...>
        <action
            android:id="@+id/action_mainFragment_to_ADialog"
            app:destination="@id/ADialog" />
    </fragment>

    <dialog
        android:id="@+id/ADialog"
        android:name="com...ADialog"
        android:label="ADialog"
        tools:layout="@layout/dialog_a">
        <action
            android:id="@+id/action_aDialog_to_bDialog"
            app:destination="@id/BDialog" />
    </dialog>

    <dialog
        android:id="@+id/BDialog"
        android:name="com...BDialog"
        android:label="BDialog" />

    <action
        android:id="@+id/action_global_login"
        app:destination="@id/nav_graph_login"
        app:popUpTo="@id/mainFragment"
        app:popUpToInclusive="true"/>

</navigation>

我希望一次只在屏幕上显示一个对话框。因此,当用户点击 A 上的按钮转到 B 时,我在调用 navigate(action_aDialog_to_bDialog) 弹出 B 之前在 A 上调用 dismiss()。B 弹出但是当我尝试从 B 调用 navigate(action_global_login) 时,我得到以下错误:

IllegalStateException: Fragment B not associated with a fragment manager.

任何想法是什么问题以及如何解决它?

【问题讨论】:

    标签: android android-dialogfragment dialogfragment android-jetpack-navigation


    【解决方案1】:

    我没有以编程方式调用dismiss(),而是将图表更新如下:

    <dialog
        android:id="@+id/ADialog"
        android:name="com...ADialog"
        android:label="ADialog"
        tools:layout="@layout/dialog_a">
        <action
            android:id="@+id/action_aDialog_to_bDialog"
            app:destination="@id/ADialog"
            app:popUpTo="@id/ADialog"
            app:destination="@id/BDialog" />
    </dialog>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-06-26
      • 1970-01-01
      • 1970-01-01
      • 2019-07-28
      • 2018-11-16
      • 2019-11-15
      • 1970-01-01
      • 2017-06-11
      相关资源
      最近更新 更多