我有Activity一个NavHostFragment嵌套在 a 中的Fragment:
View的根ActivityFragmentNavHostFragment
当我在 NavGraph 中导航时,正在创建一个返回堆栈。NavHostFragment但是,只要我单击设备的后退按钮,而不是转到前Fragment一个后退堆栈,应用程序就会关闭(好像没有后退堆栈一样)。
我错过了什么吗?NavHostFragment和之间是否有任何耦合Fragment需要做?
我有Activity一个NavHostFragment嵌套在 a 中的Fragment:
View的根Activity
Fragment
NavHostFragment当我在 NavGraph 中导航时,正在创建一个返回堆栈。NavHostFragment但是,只要我单击设备的后退按钮,而不是转到前Fragment一个后退堆栈,应用程序就会关闭(好像没有后退堆栈一样)。
我错过了什么吗?NavHostFragment和之间是否有任何耦合Fragment需要做?
正如在以编程方式与 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();
}