如何在另一个 Fragment 中使 `NavHostFragment` 响应 `onBackPressed`?
How to make a `NavHostFragment` respond to `onBackPressed` when inside another Fragment?
我有一个 Activity
,其中 NavHostFragment
嵌套在 Fragment
中:
Activity
的根 View
Fragment
NavHostFragment
当我在 NavGraph 中导航时,正在为 NavHostFragment
创建一个 back stack。但是,只要我点击设备的后退按钮,而不是转到 后退堆栈 的前一个 Fragment
,应用程序就会关闭(好像没有 返回堆栈).
我错过了什么吗? NavHostFragment
和 Fragment
之间是否有任何耦合需要完成?
如 interact programmatically with the Navigation component, it is the call to 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();
}
我有一个 Activity
,其中 NavHostFragment
嵌套在 Fragment
中:
Activity
的根View
Fragment
NavHostFragment
当我在 NavGraph 中导航时,正在为 NavHostFragment
创建一个 back stack。但是,只要我点击设备的后退按钮,而不是转到 后退堆栈 的前一个 Fragment
,应用程序就会关闭(好像没有 返回堆栈).
我错过了什么吗? NavHostFragment
和 Fragment
之间是否有任何耦合需要完成?
如 interact programmatically with the Navigation component, it is the call to 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();
}