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