我想知道如何使用导航控制器正确处理系统后退按钮操作 . 在我的应用程序中,我有两个片段(例如片段1和片段2),我在fragment1中有一个动作,目的地为fragment2 . 一切都运行良好,除了一件事 - 当用户按下fragment2中的系统后退按钮时,我想显示一个对话框(例如使用DialogFragment)来确认退出 . 实现此行为的最佳方法是什么?如果我在我的主机片段中使用 app:defaultNavHost="true"
,它会自动返回忽略我的规则 . 此外,这个组件是什么?
我应该使用“pop to”吗?
2 回答
这里的解决方案应该做你想要的,但我认为这是一个糟糕的解决方案,因为它违背了Android导航组件的想法(让android处理导航) .
覆盖您的活动中的“onBackPressed”
所以,我创建了一个界面
并通过需要处理后退按钮的所有片段实现它 . 在主要活动中,我覆盖了
onBackPressed()
方法:所以,如果我的导航主机的顶部片段实现
OnBackPressedListener
接口,我调用它的onBackPressed()
方法,在其他地方我只是弹回堆栈并关闭应用程序,如果后面的堆栈是空的 .