【问题标题】:How to use viewbinding in menu items如何在菜单项中使用视图绑定
【发布时间】:2021-07-14 10:37:12
【问题描述】:

我遇到的问题是我无法检索菜单项的绑定 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>

【问题讨论】:

    标签: android kotlin binding menu


    【解决方案1】:

    正如docs 中所述:

    视图绑定是一项功能,可让您更轻松地编写与视图交互的代码。一旦在模块中启用视图绑定,它就会为该模块中存在的每个 XML 布局文件生成一个绑定类。绑定类的实例包含对在相应布局中具有 ID 的所有视图的直接引用。

    在大多数情况下,视图绑定会替换 findViewById

    看一下粗体字,你注意到视图绑定只适用于 XML 布局(位于res/layout),而菜单位于res/menu

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

    目前ViewBinding和DataBinding只针对布局资源xml文件,不针对菜单资源等。

    【讨论】:

    • 如果是使用 R.id.navigation_home 的情况,其中 navigation_home 是菜单 ID。显示红色错误,无法识别此 ID。
    • 您已经在菜单 XML 中定义了 Id: R.id.navigation_home。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多