Пункт меню не станет активным после добавления NavigationItemSelectedListener - PullRequest
0 голосов
/ 22 сентября 2019

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

1 Ответ

0 голосов
/ 22 сентября 2019

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

return false;

на

return true;

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

...