使用工具栏中的按钮在片段之间导航
Posted
技术标签:
【中文标题】使用工具栏中的按钮在片段之间导航【英文标题】:Navigate between fragments using button in toolbar 【发布时间】:2021-02-22 06:35:00 【问题描述】:在我的应用程序中,我希望将创建新记录的过程分为几个步骤,在这些步骤中向用户询问不同的信息。因此,我使用NavHostFragment
创建了一个活动,并希望通过此活动工具栏中的next
按钮使用导航图在片段之间切换。
是否可以将按钮配置为基于导航图在片段之间导航?这是一个好方法吗?我应该为每个步骤使用一个新活动吗?我是 android 开发新手,所以我不确定最好的方法是什么。
【问题讨论】:
【参考方案1】:您可以使用导航图处理它
处理片段中的工具栏点击事件:
https://***.com/a/30077965/11982611
在处理每个片段的下一个按钮点击事件时,实现您的导航代码
findNavController().navigate(Your action)
在 Activity 的 OnItemOpotionsSelected 监听器中处理所有导航过程
override fun onOptionsItemSelected(item: MenuItem): Boolean
val navHostFragment = supportFragmentManager.primaryNavigationFragment
val fragment = navHostFragment?.childFragmentManager?.fragments?.get(0)
when(item.itemId)
android.R.id.home->super.onBackPressed()
R.id.next->
if(fragment is Fragment1)
fragment.findNavController().navigate(Fragment1toFragmen2 action)
if(fragment is Fragment2)
fragment.findNavController().navigate(Fragment2toFragmen3 action)
return true
【讨论】:
谢谢,我尝试使用onOptionsItemSelected
方法处理我的活动中的导航,它完全符合我的要求。但是,当我从 Fragment2 移回 Fragment1 时,我的操作栏中的后退按钮会消失,并且仅对 Fragment1 不再可见。你知道为什么吗?我用setDisplayHomeAsUpEnabled(true)
将它设置在我的活动中。
是因为导航组件backstack问题。你需要重写 onBackPressed 方法来实现你想要的。以上是关于使用工具栏中的按钮在片段之间导航的主要内容,如果未能解决你的问题,请参考以下文章