我有一个BottomNavigationView
。
它可以工作并在用户单击的项目下显示文本标题。
但是,添加OnNavigationItemSelectedListener
会停止点按的项目,以在其图标下方显示其标题。它仍然会产生涟漪效应,并运行附加到该项目侦听器的任何代码。添加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;
我的猜测是告诉侦听器未单击菜单项吗?