1

我有Activity一个NavHostFragment嵌套在 a 中的Fragment

  • View的根Activity
    • Fragment
      • NavHostFragment

当我在 NavGraph 中导航时,正在创建一个返回堆栈NavHostFragment但是,只要我单击设备的后退按钮,而不是转到前Fragment一个后退堆栈,应用程序就会关闭(好像没有后退堆栈一样)。

我错过了什么吗?NavHostFragment和之间是否有任何耦合Fragment需要做?

4

1 回答 1

1

正如在以编程方式与 Navigation 组件交互时提到的那样,调用setPrimaryNavigationFragment()`将 Fragments 连接到系统后退按钮。

层次结构中的每个片段都必须setPrimaryNavigationFragment()设置。虽然NavHostFragment如果您从 XML 膨胀它并使用它可能会调用它本身app:defaultNavHost="true",但您还需要在父片段上显式调用它。

// In your Activity's onCreate() when you add the parent fragment
if (savedInstanceState == null) {
    Fragment parent = new ParentFragment();
    getSupportFragmentManager().beginTransaction()
        .add(R.id.container, parent)
        .setPrimaryNavigationFragment(parent)
        .commit();
}
于 2020-07-29T20:21:19.827 回答