当前位置: 首页 > 知识库问答 >
问题:

如何使用导航架构组件创建一个片段?

谢雅珺
2023-03-14

我正在使用BottomSheetDialogFraenge显示几个自定义设置的。

要求:

当我点击任何选项卡在BottomSheetDialogFraance我替换的片段,并将其添加到backstack,以便当用户点击的onBackPress或向上的行动,它应该回到最后设置的BottomSheetDialogFraank的片段。

我想使用导航架构组件来简化我的事务。

问题:如果我使用导航架构组件从FragmentA导航到BottomSheetDialogFrach然后我收到下面的错误。

JAVAlang.IllegalStateException:对话框不能为空

我不知道如何使用导航体系结构组件实例化BottomSheetDialogFraank,并且使用下面的代码将不会使用导航体系结构组件进行维护。

BottomSheetDialogFragment.show(FragmentManager manager, String tag)

共有1个答案

金宣
2023-03-14

在导航组件版本2.1.0-alpha04中,导航图可以包含对话框,作为目的地之一。

<?xml version="1.0" encoding="utf-8"?>
<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/main_navigation"
    app:startDestination="@id/startFragment">

    <fragment
        android:id="@+id/loginFragment"
        android:name="com.awesomeproject.android.authentication.login.LoginFragment"
        android:label="Login"
        tools:layout="@layout/login_fragment" />

    <dialog
        android:id="@+id/bottomSheet"
        android:name="com.awesomproject.android.BottomSheetFragment"
        tools:layout="@layout/bottom_sheet_dialog_fragment" />

</navigation>

底片片段看起来与其他底片相似。

class BottomSheetFragment : BottomSheetDialogFragment() {
    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
                              savedInstanceState: Bundle?): View =
            inflater.inflate(R.layout.bottom_sheet_dialog_fragment, container, false)
}

然后您可以像对待其他目的地一样对待BotomSheet。您可以导航到此目的地或将SafArgs传入。

干杯

 类似资料:
  • 我正在我的应用程序中尝试导航架构组件。早些时候,我使用片段事务来实现以下功能。基本上,我想从导航。 碎片- 如果我正在使用导航组件并尝试 然后结果是FragmentA被FragmentB替换并且背景片段不可见。 我想知道一个解决方案,如果导航架构组件允许的话。 附言:我听说过嵌套导航主机,但从内部使用它好吗。 更新: FragmentB将有进一步交易的行动,例如: 碎片- 当用户按下后退按钮时,片

  • null 在调用之前和之后,我尝试了,但都不起作用(这是有意义的:在它没有要弹出的内容之前;在它只关闭刚刚添加的片段之后)。这是否意味着唯一的方法是重写来拦截它,并确保在这些情况下不会被调用? 谢了!

  • 是否可以将新的导航架构组件与DialogFragment一起使用?我必须创建自定义导航器吗? 我很乐意将它们与导航图中的新功能结合使用。

  • 我目前正在学习新的Android导航架构组件 (https://developer.android.com/topic/libraries/architecture/navigation/). 我有点混淆了它的动机和概念,以下是我的不确定性: Android导航架构组件是否旨在消除在单个应用程序中使用多个活动的需要?这意味着,整个应用程序只需要一个单一活动,所有其他页面都将是片段? 在应用程序中使

  • 这是我的单一活动方法: MainActivity具有NavHost 带有AppBarLayout、TabLayout、ViewPager等的主片段。 MainFragment在ViewPager中有2个(或更多)片段- CustomerListFragment- EmployeesListFragment公司- } CustomerDetailFrament(具有完全不同的设计布局) 员工详细信息