java - 如何在android的片段中设置后退按钮的导航
问题描述
我正在开发一个包含 5 个片段的应用程序,其中一个片段名为 home 片段。我希望每当我按下任何其他片段上的后退按钮时,它只导航到主片段。请向我建议我该怎么做。?提供以下代码供参考
val expensefragment = expenseFragment()
val notesfragment = notesFragment()
val forumfragment = forumFragment()
val printfragment = printFragment()
val homefragment = homefragment()
setCurrentFragment(homefragment)
val bottomNavigationview = findViewById<BottomNavigationView>(R.id.bottomNavigationView)
bottomNavigationview.setOnNavigationItemSelectedListener { item ->
when(item.itemId) {
(R.id.expensebar)-> setCurrentFragment(expensefragment)
(R.id.notesbar)-> setCurrentFragment(notesfragment)
(R.id.printbar)-> setCurrentFragment(printfragment)
(R.id.forumbar)-> setCurrentFragment(forumfragment)
(R.id.homebar) -> setCurrentFragment(homefragment)
}
true
}
}
private fun setCurrentFragment(fragment: Fragment){
supportFragmentManager.beginTransaction().apply {
replace(R.id.frameLayout,fragment)
commit()
}
}
解决方案
在替换之后和提交之前调用以下函数
.addToBackStack(backStateName);
如果您不想给出 stack 的名称,请传递 null 或空值。这个函数将像 Intent 一样创建 backstack。
推荐阅读
- mysql - 如何从 aws rds mysql master 在 gcp cloud sql 副本上添加用户
- gpu - Core ML 中 fp16 计算与 fp32 计算的区别
- python - 如何将 pickle.loads 从 Python 2 转换为 Python 3?
- reactjs - 对如何正确地将道具传递给后代组件感到困惑
- c++ - 由于将位字段类型转换为整数,Valgrind 未初始化字节错误
- pandas - 如何找到一组向量的所有三个向量子集的三重交叉计数?
- flutter - 之前在 Flutter 中是否可以有带有内容的标签栏?
- kubernetes - 如何减少在 Kubernetes 上检测节点故障的时间?
- apache-kafka - 如何生成输入数据并将其存储到本地文件以及我们如何使用 kafka 读取该输入生成文件的数据
- spring - 在 Spring 的 JmsListener 中实例化 IWebContext