不推荐使用setOnNavigationItemSelectedListener
目前我正在开发一个应用程序,它有一个带有三个菜单项的底部导航栏。我曾经用于setOnNavigationItemSelectedListener()被点击的项目。但现在我面临这个方法已经贬值的问题。
- 应用语言:
Java - 问题:
'setOnNavigationItemSelectedListener(com.google.android.material.bottomnavigation.BottomNavigationView.OnNavigationItemSelectedListener)' is deprecated
有什么办法可以解决吗?有没有比setOnNavigationItemSelectedListener()方法更好的选择。
回答
根据 github 来源已弃用:BottomNavigationView.setOnNavigationItemSelectedListener
在其评论中,您可以阅读:
@deprecated Use {@link NavigationBarView#setOnItemSelectedListener(OnItemSelectedListener)}
* instead.
所以使用NavigationBarView.setOnItemSelectedListener从它的基类:
/**
* Set a listener that will be notified when a navigation item is selected. This listener will
* also be notified when the currently selected item is reselected, unless an {@link
* OnItemReselectedListener} has also been set.
*
* @param listener The listener to notify
* @see #setOnItemReselectedListener(OnItemReselectedListener)
*/
public void setOnItemSelectedListener(@Nullable OnItemSelectedListener listener) {
selectedListener = listener;
}
另请参阅此提交
因为它解释了有关此更改的混淆:
侦听器已被弃用,而支持
NavigationBarView#OnItemSelectedListener和
NavigationBarView#OnItemReselectedListener,但从未添加弃用文档,因此不清楚开发人员应该使用什么来代替。
回答
你可以试试setonItemSelectedListener。它的工作原理与setOnNavigationItemSelectedListener()[在 android 11 中测试]
bnv.setOnItemSelectedListener(new NavigationBarView.OnItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
int id = item.getItemId();
switch(id){
//check id
}
return true;
}
});
科特林:
bnv.setOnItemSelectedListener { item ->
when (item.itemId) {
}
true
}
THE END
二维码