首页 > 解决方案 > 添加 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" />

标签: javaandroidandroid-bottom-nav-view

解决方案


我解决了。解决方法是改变

return false;

return true;

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


推荐阅读