如何向导航抽屉项目添加操作?

How to add action to a Navigation Drawer item?

我正在使用带有导航图的导航抽屉。一切正常,但我想在抽屉中添加一个共享按钮,它应该只执行一个操作并显示共享 sheet 而不是打开新片段。

问题是当我覆盖 NavigationViewsetNavigationItemSelectedListener 方法来执行此操作时,导航图不再起作用。

这是我在MainActivity中的onCreate方法:

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    val toolbar: Toolbar = findViewById(R.id.toolbar)
    setSupportActionBar(toolbar)

    val drawerLayout: DrawerLayout = findViewById(R.id.drawer_layout)
    val navView: NavigationView = findViewById(R.id.nav_view)
    val navController = findNavController(R.id.main_fragment)
    // Passing each menu ID as a set of Ids because each
    // menu should be considered as top level destinations.
    appBarConfiguration = AppBarConfiguration(setOf(
            R.id.nav_home, R.id.nav_evidenceIntroduction, R.id.nav_settings, R.id.nav_video, R.id.fragment_credits, R.id.nav_umlaute, R.id.fragment_favorite), drawerLayout)
    setupActionBarWithNavController(navController, appBarConfiguration)
    navView.setupWithNavController(navController)
    navView.setNavigationItemSelectedListener {
        when (it.itemId) {
            R.id.nav_share -> {
                drawerLayout.closeDrawer(GravityCompat.START)
                val sendIntent = Intent()
                sendIntent.action = Intent.ACTION_SEND
                sendIntent.putExtra(Intent.EXTRA_TEXT, getString(R.string.teilen_detail, getString(R.string.app_name), "".addWatermark()))
                sendIntent.type = "text/plain"
                startActivity(sendIntent)

                HapticFeedback.vibrate(it.actionView)
                true
            }
            else -> true
        }
    }
}

使用setOnMenuItemClickListener代替setNavigationItemSelectedListener

navView.menu.findItem(R.id.nav_share).setOnMenuItemClickListener {}