java - 添加 NavigationItemSelectedListener 后菜单项不会变为活动状态
问题描述
我有一个BottomNavigationView
.
它可以工作并在用户单击的项目下显示文本标题。
但是,添加 aOnNavigationItemSelectedListener
会停止点击的项目以在其图标下方显示其标题。它仍然会产生连锁反应,并运行附加到该项目侦听器的任何代码。添加 Log.d() 并在单击项目时将消息打印到控制台表明侦听器正在运行。但由于某种原因,该项目的文本标题不会显示在下方。所以你不知道你最后按下的是哪个按钮。
我尝试将它从 onStart() 移动到 onCreate() 但出现同样的问题。
将其注释掉可以解决问题,但我想在项目点击时触发事件。
听众
bnvMain.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {
switch (menuItem.getItemId()) {
case R.id.navigation_home:
// open fragment 1
break;
case R.id.navigation_dashboard:
// open fragment 2
break;
case R.id.navigation_notifications:
// open fragment 3
break;
case R.id.navigation_profile:
// open fragment 4
Log.d("myTag", "This seems to be running...");
break;
}
return false;
}
});
XML
<com.google.android.material.bottomnavigation.BottomNavigationView
android:id="@+id/bnvMain"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:animateLayoutChanges="true"
android:background="@color/colorPrimary"
app:itemIconTint="@color/colorAccent"
app:itemTextColor="@color/colorNavText"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:menu="@menu/navigation" />
解决方案
我解决了。解决方法是改变
return false;
至
return true;
我的猜测是它告诉侦听器未单击菜单项?
推荐阅读
- sed - How to use Sed to Replace Wildcard with Space
- c# - 我的 KeyStrokesCounter 一直运行良好,直到今天
- netsuite - Berkshire script search on transaction
- r - 从简单的特征几何转换为数据框
- command-line-interface - Splunk - 连接到远程服务器时来自 cli 的“未找到”
- javascript - Brotli in a React application using server side rendering(SSR)
- c# - 设置DataGridView的DataSource后,Columns和Rows还是空的
- java - How to Display Fragments in Main Activity from Navigation Drawer?
- javascript - Variable global defined in a function is showing undefined when called outside the function
- c++ - 需要帮助理解 C++ 中的组合和类函数