0

这是配置BottomNavigationView导航的常规方法:

    val appBarConfiguration = AppBarConfiguration(setOf(R.id.navigation_home, R.id.navigation_months, R.id.navigation_due_date_calculator))
    setupActionBarWithNavController(navController, appBarConfiguration)
    navView.setupWithNavController(navController)

但是,如果你想为一个按钮调用一个函数而不是打开一个片段,会发生什么?

我试过这个:

navView.setOnNavigationItemSelectedListener {
            when (it.itemId){
                R.id.navigation_other_useful_apps -> {
                    Toast.makeText(applicationContext, "Other Useful Apps", Toast.LENGTH_SHORT).show()
                    true
                }
                else -> true
            }
        }

问题是,当我添加该方法时,导航不再起作用。如何在一个项目上调用一个函数,并AppBarConfiguration为其他项目使用?

4

1 回答 1

1

您必须覆盖onOptionsItemSelected函数,它将调用该函数而不是打开片段

override fun onOptionsItemSelected(item: MenuItem): Boolean {
        when (item.itemId) {
            R.id.navigation_other_useful_apps -> {
                Toast.makeText(applicationContext, "Other Useful Apps", Toast.LENGTH_SHORT).show()
                return true;
            }

        }
        return super.onOptionsItemSelected(item)
    }

或试试这个

navView.menu.findItem(R.id.navigation_other_useful_apps )
        .setOnMenuItemClickListener { menuItem: MenuItem? ->
                Toast.makeText(applicationContext, "Other Useful Apps", Toast.LENGTH_SHORT).show()
            true
        }
于 2021-01-30T16:42:36.273 回答