【发布时间】: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