Пункт меню не станет активным после добавления NavigationItemSelectedListener

У меня есть 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" />

person Community    schedule 22.09.2019    source источник


Ответы (1)


Я решил это. Решение состоит в том, чтобы изменить

return false;

to

return true;

Я предполагаю, что это говорит Слушателю, что пункт меню не был нажат?

person Community    schedule 22.09.2019