如何在菜单项中使用视图绑定
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 文件,不适用于菜单资源和其他资源。
我遇到的问题是无法检索菜单项的绑定 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 文件,不适用于菜单资源和其他资源。