如何在菜单项中使用视图绑定

How to use viewbinding in menu items

我遇到的问题是无法检索菜单项的绑定 ID。
HomeFragment ->includes(HomeActivity) ->includes(BottomNavigation)

 //bottom navigation
    fun getBottomNavigation(){
           val bottomNavigation = binding!!.includeBottomNavigation.bottomNavigation
           bottomNavigation.itemIconTintList = null
            bottomNavigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelected)
       }
 private val mOnNavigationItemSelected = BottomNavigationView.OnNavigationItemSelectedListener{ menuItem ->
        when (menuItem.itemId) {
            R.id.navigation_home -> {  

//问题是什么,我想用绑定。 navigation_home 但没有发生

 return@OnNavigationItemSelectedListener true
                }
                R.id.navigation_chapter -> {
                    return@OnNavigationItemSelectedListener true
                }
                R.id.navigation_store -> {
                    return@OnNavigationItemSelectedListener true
                }
            }
            false
        }

//menu items   
 <menu
    xmlns:android="http://schemas.android.com/apk/res/android"
            <item
            android:id="@+id/navigation_home"
            android:enabled="true"
            android:icon="@drawable/ic_home"
            android:title="" />
        
        <item
            android:id="@+id/navigation_notification"
            android:enabled="true"
            android:icon="@drawable/ic_notification"
            android:title="" />
    </menu>

docs 中所述:

View binding is a feature that allows you to more easily write code that interacts with views. Once view binding is enabled in a module, it generates a binding class for each XML layout file present in that module. An instance of a binding class contains direct references to all views that have an ID in the corresponding layout.

In most cases, view binding replaces findViewById.

看看粗体字,您会注意到视图绑定仅适用于 XML 布局(位于 res/layout),而菜单位于 res/menu.

此外,视图绑定使用 findViewById,而菜单使用 menu.findItem(R.id.menu_id),因此这是不可能的。

目前,ViewBinding 和 DataBinding 仅适用于布局资源 xml 文件,不适用于菜单资源和其他资源。