我有一个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" />