Android 如何使用导航组件保持对话框打开?
我正在尝试使用导航组件从对话框导航到片段。我面临的问题是,对话框在导航后自动弹出,因为它实现了androidx.navigation.FloatingWindow接口(文档链接-) 因此,我希望保持底层对话框处于打开状态。实现这一目标的最佳选择是什么 我的导航图:Android 如何使用导航组件保持对话框打开?,android,android-architecture-navigation,Android,Android Architecture Navigation,我正在尝试使用导航组件从对话框导航到片段。我面临的问题是,对话框在导航后自动弹出,因为它实现了androidx.navigation.FloatingWindow接口(文档链接-) 因此,我希望保持底层对话框处于打开状态。实现这一目标的最佳选择是什么 我的导航图: <navigation xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schema
<navigation xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/return_order_dialog_nested_nav_graph"
app:startDestination="@id/returnOrderBottomDialog">
<dialog
android:id="@+id/returnOrderBottomDialog"
android:name="ru.dpd.features.returnOrder.ReturnOrderBottomDialog"
android:label="ReturnOrderBottomDialog"
tools:layout="@layout/dialog_bottom_return_order">
<argument
android:name="orderId"
app:argType="string" />
<action
android:id="@+id/action_returnOrderBottomDialog_to_returnOrderDepartmentMapFragment"
app:destination="@id/returnOrderDepartmentMapFragment" />
</dialog>
<fragment
android:id="@+id/returnOrderDepartmentMapFragment"
android:name="ru.dpd.features.returnOrder.tabs.map.ReturnOrderDepartmentMapFragment"
android:label="ReturnOrderDepartmentMapFragment"
tools:layout="@layout/fragment_departments_map">
<argument
android:name="orderId"
app:argType="string" />
<argument android:name="cityId" />
</fragment>
</navigation>
没有正式的解决方案,这是一种变通办法。我已经尝试使用容器片段作为后堆栈中的条目/节点 实际上,当容器启动对话框显示给用户时(在导航或弹出窗口中) 容器片段没有视图。它将在创建视图中启动对话框。所有对话框参数
(orderId,…)
必须传递到容器片段,然后手动传递到对话框
class MyDialogContainerFragment : Fragment() {
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
// launch the dialog
findNavController(this).navigate(....)
return null
}
}