android - Android 导航组件 - OnNavigateUpListener
问题描述
我想在 Android 导航控制器从特定片段 ( findNavController().navigateUp()
) 向上导航时附加一个回调。我怎样才能实现这个功能?
我已经听说过requireActivity().onBackPressedDispatcher.addCallback(this)
。这只会听系统的后退按钮而不是工具栏上的后退箭头。我想听听用户按下左上角工具栏上的后退箭头的事件。
解决方案
我设法找到了解决方案。这是我的 MainActivity 的 onCreate() 的样子:
val navController = findNavController(R.id.nav_host_fragment)
val appBarConfiguration = AppBarConfiguration(navController.graph)
my_toolbar.setupWithNavController(navController, appBarConfiguration)
// The code below solved it for me. It overrides the toolbar back and then calls the OS back which is overridden in my fragment.
my_toolbar.setNavigationOnClickListener {
onBackPressed()
}
在我的片段中,我在 onActivityCreated() 中执行此操作
requireActivity().onBackPressedDispatcher.addCallback(this) {
// override custom back
}
现在我可以在一个处理程序中同时覆盖工具栏后退按钮和操作系统后退按钮。
推荐阅读
- c++ - C++ 中的生产者-消费者,不使用 pthread 库
- javascript - V8 是执行解释器产生的字节码还是涡轮风扇编译器产生的二进制代码?
- google-apps-script - 谷歌应用脚本宏中如何引用工作表名称?
- swift - 从 Fire Storage 检索图像,但是如果图像不存在,则应用程序崩溃
- mysql - Node JS / MySQL:无法在我的文件之间导出我的数据库
- asp.net - 为 asp.net 应用程序创建 Web App timeout Insights
- javascript - 点击时如何替换和尚?
- ejs - EJS 在值标签内添加 For 循环变量
- c# - 在将 ASP.NET Core Web API 发布到 Azure 时需要帮助
- javascript - 使函数等待变量为真(javascript)