Для тех, кто все еще пользуется SupportLibrary <25.3.0
Я не уверен, является ли это полным ответом на этот вопрос, но моя проблема была очень похожей - мне пришлось обработать back
нажатие кнопки и перевести пользователя на предыдущую вкладку, где он был. Так что, может, мое решение кому-нибудь пригодится:
private void updateNavigationBarState(int actionId){
Menu menu = bottomNavigationView.getMenu();
for (int i = 0, size = menu.size(); i < size; i++) {
MenuItem item = menu.getItem(i);
item.setChecked(item.getItemId() == actionId);
}
}
Пожалуйста, имейте в виду, что если пользователь нажмет другую вкладку навигации BottomNavigationView
, не очистит текущий выбранный элемент, поэтому вам необходимо вызвать этот метод onNavigationItemSelected
после обработки действия навигации:
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()) {
case R.id.some_id_1:
// process action
break;
case R.id.some_id_2:
// process action
break;
...
default:
return false;
}
updateNavigationBarState(item.getItemId());
return true;
}
Что касается сохранения состояния экземпляра, я думаю, вы могли бы поиграть с тем же action id
видом навигации и найти подходящее решение.
BottomNavigationView
не выполняет никакого внутреннего сохранения состояния. Вероятно, ожидайте, что это будет включено в будущее обновление. Дубликат (с дополнительной информацией) здесь: stackoverflow.com/questions/40236786/…