我想知道如何使用导航控制器正确处理系统后退按钮操作。在我的应用程序中,我有两个片段(例如,片段 1 和片段 2),我在片段 1 中有一个动作,目的地是片段 2。除了一件事之外,一切都运行良好 - 当用户在 fragment2 中按下系统后退按钮时,我想显示一个对话框(例如使用 DialogFragment)来确认退出。实现此行为的最佳方法是什么?如果我在我的主机片段中使用 app:defaultNavHost="true"
,那么它会自动返回而忽略我的规则。另外,这个组件是干什么用的?
我应该使用“pop to”可能吗?
原文由 Kiryl Tkach 发布,翻译遵循 CC BY-SA 4.0 许可协议
最新更新 - 2019 年 4 月 25 日
新版本 androidx.activity 版本。 1.0.0-alpha07 带来了一些变化
android官方指南中的更多解释: 提供自定义后退导航
例子:
旧更新
UPD:2019 年 4 月 3 日
现在它简化了。更多信息 在这里
例子:
已弃用(自 2019 年 4 月 3 日版本 1.0.0-alpha06 起):
既然 这样,它可以在您的片段中使用 JetPack 实现
OnBackPressedCallback
并将其添加到活动中:getActivity().addOnBackPressedCallback(getViewLifecycleOwner(),this);
您的片段应如下所示:
UPD: 您的活动应扩展
AppCompatActivity
或FragmentActivity
并在 Gradle 文件中: