添加NavigationItemSelectedListener后,菜单项将不会变为 Activity 状态

2019年11月28日 59点热度 0条评论

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

我的猜测是告诉侦听器未单击菜单项吗?