【问题标题】:Navigate between fragments using button in toolbar使用工具栏中的按钮在片段之间导航
【发布时间】:2021-02-22 06:35:00
【问题描述】:

在我的应用程序中,我希望将创建新记录的过程分为几个步骤,在这些步骤中向用户询问不同的信息。因此,我使用NavHostFragment 创建了一个活动,并希望通过此活动工具栏中的next 按钮使用导航图在片段之间切换。

是否可以将按钮配置为基于导航图在片段之间导航?这是一个好方法吗?我应该为每个步骤使用一个新活动吗?我是 android 开发新手,所以我不确定最好的方法是什么。

【问题讨论】:

    标签: android kotlin android-fragments


    【解决方案1】:

    您可以使用导航图处理它

    1. 处理片段中的工具栏点击事件:

      https://stackoverflow.com/a/30077965/11982611

      在处理每个片段的下一个按钮点击事件时,实现您的导航代码

      findNavController().navigate(Your action)
      
    2. 在 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 方法来实现你想要的。
    猜你喜欢
    • 1970-01-01
    • 2016-08-20
    • 2022-12-11
    • 1970-01-01
    • 1970-01-01
    • 2015-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多