android - 如何使用导航组件导航回上一个片段
问题描述
我在我的应用程序中使用导航组件。我的应用程序中有三个片段Home
,Cart
并且Cake
. 我想在操作栏中按后退箭头导航到所需的片段。当我单击后退箭头时,它不会切换到所需的片段而不是返回到Home
片段。
下面是我的代码:
CartFragment.java
OnBackPressedCallback back = new OnBackPressedCallback(true) {
@Override
public void handleOnBackPressed() {
NavController navController = Navigation.findNavController(getActivity(),R.id.fragment);
navController.navigate(R.id.cakeFragment);
}
};
requireActivity().getOnBackPressedDispatcher().addCallback(getActivity(),back);
解决方案
要拦截后退按钮单击,您需要覆盖onOptionsItemSelected
:
override fun onOptionsItemSelected(item: MenuItem): Boolean {
when (item.itemId) {
android.R.id.home -> {
handleBackPress()
return true
}
}
return super.onOptionsItemSelected(item)
}
推荐阅读
- powerbi - DAX 问题,当我在 RETURN 子句中使用 IF 时,过滤器/关系被忽略
- amazon-web-services - 如何在 Hibernate 中以编程方式提供对 ColumnTransofrmer 的读写?
- django - 第 8 行:“空”。您是否忘记注册或加载此标签?
- java - 哪个 PlatformTransactionManager 在 Spring 中用于处理 @Transactional
- integer-overflow - 左移计数 >= 类型的宽度 [-Wshift-count-overflow]
- angular - 允许直接访问路由中定义的 Angular 应用程序 url(浏览器导航)
- java - 在其他几条消息完成后发送消息而不使用外部存储?
- c++ - C++20 模块实现分区的 hpp/cpp 拆分
- ruby-on-rails - 我应该把 entrypoint.sh 文件 Rails App for Docker 放在哪里?
- node.js - 如何在 Sequelize 函数中添加 where 子句?