Android 中的底部导航仅适用于双击,

Bottom Navigation in Android works only on double clicks ,

创建一个应用程序,并通过设置 "On navigation selected listener" 实现底部导航,点击底部导航面板中的图标,我试图替换片段,片段确实被替换但双击.单击菜单项什么也不做。 这是我的代码 '''

class 主活动:AppCompatActivity() {

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)

            setContentView(R.layout.activity_main)
   // val toolbar=app_bar as androidx.appcompat.widget.Toolbar
    //setSupportActionBar(toolbar)

 val navigation = findViewById<View>(R.id.nav_view) as BottomNavigationView
    navigation.setOnNavigationItemReselectedListener {

        when (it.itemId) {
            R.id.navigation_home -> {

                var x = supportFragmentManager
                var y = x.beginTransaction()

                var fragment = HomeFragment()
                y.replace(R.id.nav_host_fragment, fragment)
                y.addToBackStack("123")
                y.commit()


            }

            R.id.navigation_login -> {

                var x = supportFragmentManager
                var y = x.beginTransaction()

                var fragment = LoginFragment()
                y.replace(R.id.nav_host_fragment, fragment)
                y.addToBackStack("456")
                y.commit()


            }

            R.id.navigation_notifactory -> {

                var x = supportFragmentManager
                var y = x.beginTransaction()

                var fragment = NotificationFragment()
                y.replace(R.id.nav_host_fragment, fragment)
                y.addToBackStack("789")
                y.commit()


            }




        }

    }


    var x = supportFragmentManager
    var y = x.beginTransaction()

    val fragment=HomeFragment()

    y.add(R.id.nav_host_fragment,fragment)
    y.addToBackStack(null)
    y.commit()
}



}

'''

替换为:

    navigation.setOnNavigationItemReselectedListener {

作者:

   navigation.setOnNavigationItemSelectedListener {

您正在使用 navigation.setOnNavigationItemReselectedListener。它是 select select 项目,而不是 select 项目。这就是您必须按两次才能 select 编辑项目的原因。删除它并设置 navigation.setOnNavigationItemSelectedListener

我的解决方法是,如果检查不正确我不采取行动

binding.bottomNav.setOnNavigationItemSelectedListener {
            if (!binding.bottomNav.menu.findItem(it.itemId).isChecked) navController.navigate(it.itemId)
            true

    }