android - 使用带有导航库的嵌套 DialogFragments 时出现 IllegalStateException
问题描述
我正在使用导航库(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 时,我dismiss()
在调用弹出 B 之前调用navigate(action_aDialog_to_bDialog)
了 A。 B 弹出但当我尝试navigate(action_global_login)
从 B 调用时,出现以下错误:
IllegalStateException: Fragment B not associated with a fragment manager.
任何想法是什么问题以及如何解决它?
解决方案
我没有以编程方式调用,而是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>
推荐阅读
- python - 基于 2D 数组的 3D numpy 切片的平均值
- ios - 在 SwiftUIView 中使用委托中的函数
- python - 如何格式化程序,以便只有用户名“admin”可以在 Python 中注册/添加新用户?
- powerbi - 在 Power BI 中以百分比形式显示值
- angular - 如何访问 Swiper Angular 组件的虚拟幻灯片方法
- html - 选择标签上的默认值的ReactJS问题
- sql - 更新oracle之前触发问题[PL/SQL]
- linux-kernel - 中断嵌套,排序
- javascript - 生产中的外部 API 问题 - React.js
- .net - 是否可以增加 HttpClient 中的最大 URI 长度?(无效的 URI:uri 字符串太长)