IllegalStateException,同时使用带有导航库的嵌套DialogFragments

问题描述 投票:0回答:1

我正在使用导航库(2.2.0-rc04),并且我有两个DialogFragments。第一个是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时,我在调用dismiss()弹出B之前立即在A上调用navigate(action_aDialog_to_bDialog)。B弹出,但是当我尝试从B调用navigate(action_global_login)时,出现以下错误:

IllegalStateException: Fragment B not associated with a fragment manager.

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

android android-dialogfragment dialogfragment android-jetpack-navigation
1个回答
0
投票

而不是通过编程方式调用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>
© www.soinside.com 2019 - 2024. All rights reserved.