Рекомендация: выделить элемент меню в BottomNavigationView после возобновления активности.

Как лучше всего выделить нужный пункт меню в BottomNavigationView после возвращения к этому действию?

Мой сценарий: MainActivity с нижней навигацией, которая переключается между фрагментами и запускает другие действия. Действия, запускаемые из этого меню, имеют android:parentActivityName=".activities.MainActivity" в файле манифеста. Щелчок по кнопке «Назад» на верхней панели возвращает меня к нужному действию, и последний посещенный фрагмент в этом действии также отображается, так как я добавил android:launchMode="singleTop" для MainActivity. НО всегда выделен первый пункт меню :-(

Мой обходной путь на данный момент состоит в том, чтобы добавить следующий код к каждому фрагменту (не очень приятно)

@Override
public void onResume() {
    super.onResume();
    BottomNavigationView navigation = (BottomNavigationView) getActivity().findViewById(R.id.navigation);
    Menu menu = navigation.getMenu();
    for (int i = 0; i < menu.size() ; i++) {
        menu.getItem(i).setChecked(false);
    }
    menu.getItem(MENU_ITEM_POS).setChecked(true);
}

person trayan.dev    schedule 20.10.2017    source источник
comment
Вы можете использовать SharedPreference для сохранения и загрузки выбранной позиции. Я бы также сказал, что вы можете использовать метод onSaveInstance(), но я полагаю, что он не работает, если режим запуска - одиночный.   -  person Thracian    schedule 20.10.2017
comment
Вы можете попробовать сохранить две позиции. Один из текущего (ваш MENU_ITEM_POS) и ПРЕДЫДУЩИЙ (PREVIOUS_MENU_ITEM_POS). Таким образом, вам не понадобится петля.   -  person Ellisan    schedule 20.10.2017
comment
Дубликат: stackoverflow.com/questions/41744219/   -  person lhilbert    schedule 28.02.2020