Android 使用BottomNavigationView的好方法?

Android 使用BottomNavigationView的好方法?,android,android-studio,Android,Android Studio,我想在活动之间导航,同时在底部导航上为当前项目着色 实现这一目标的最佳方法是什么? 目前,在我使用BottomNavigationView(本例中为com.google.android.material.bottomnavigation.BottomNavigationView)的每个活动中 我复制了几乎相同的代码,用于在难以维护的活动之间导航: 标记当前的itemId 设置setOnNavigationItemSelectedListener,而不使用当前的itemId jesta_botto

我想在活动之间导航,同时在底部导航上为当前项目着色

实现这一目标的最佳方法是什么?

目前,在我使用
BottomNavigationView
(本例中为
com.google.android.material.bottomnavigation.BottomNavigationView
)的每个活动中

我复制了几乎相同的代码,用于在难以维护的活动之间导航:

  • 标记当前的
    itemId
  • 设置
    setOnNavigationItemSelectedListener
    ,而不使用当前的
    itemId

    jesta_bottom_navigation.selectedItemId = R.id.nav_do_jesta
    
    jesta_bottom_navigation.setOnNavigationItemSelectedListener {
    
        val intent = when (it.itemId) {
            R.id.nav_ask_jesta -> {
                Intent(this@DoJestaActivity, AskJestaActivity::class.java)
            }
            R.id.nav_status -> {
                Intent(this@DoJestaActivity, StatusActivity::class.java)
            }
            // Settings Activity
            else -> {
                Intent(this@DoJestaActivity, SettingsActivity::class.java)
            }
        }
        startActivity(intent)
        true
    }
    
  • frame\u bottom\u navigation\u view.xml

     <?xml version="1.0" encoding="utf-8"?>
    <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    
        <com.google.android.material.bottomnavigation.BottomNavigationView
            android:id="@+id/jesta_bottom_navigation"
            style="@style/Widget.Jesta.BottomNavigationView"
            android:layout_width="match_parent"
            android:layout_height="@dimen/bottom_bar"
            android:layout_gravity="bottom"
            app:itemIconSize="30dp"
            app:itemIconTint="@drawable/jesta_bottom_navigation_colors"
            app:labelVisibilityMode="unlabeled"
            app:menu="@menu/bottom_nav_drawer_menu" />
    
    </FrameLayout>
    

    如何使用外部库更快地完成此操作


    谢谢,我查一下,你有其他好的外部库的参考资料吗?(不特定于navigationView)您应该有一个带有一个BottomNavigationView的活动,并且选择一个项目将交换显示在Activity@MikeSpeed所以我应该把这些活动当作碎片?你能解释一下原因吗?如果是我,我会把我所有的活动重构成碎片。这就是谷歌现在的建议(一个活动,多个片段)。这意味着您只需要一个BNV,而不是每次切换到新屏幕时都创建一个新的BNV。