#android #deep-linking #android-bottomnav
#Android #глубокая привязка #android-bottomnav
Вопрос:
У моей MainActivity есть нижняя навигация, которая по умолчанию соответствует первому элементу. В зависимости от данных, полученных с помощью intent, я бы хотел, чтобы выбранный элемент изменился. Я использую следующий код для метода onCreate MainActivity:
if (getIntent().getExtras() != null) {
String deepLink = getIntent().getExtras().getString("type");
if (deepLink.equals("mydata")) {
if (loggedIn) {
bottomNav.setSelectedItemId(R.id.myitem);
}
}
} else {
setTitle("First");
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, new FirstFragment(), "First").commit();
}
Сначала это работает, но через секунду или две выбранный элемент возвращается к первому. Что я могу сделать, чтобы выбранный элемент оставался активным после загрузки?
Ответ №1:
Попробуйте установить задержку перед выбором элемента
Здесь я ставлю 100 миллисекунд, вы можете увеличить это, если это не сработает
new Handler(getMainLooper()).postDelayed(new Runnable() {
@Override
public void run() {
bottomNav.setSelectedItemId(R.id.myitem);
}
}, 100); // 100 msec delay
Комментарии:
1. Это все еще происходит после 1000 мс
2. существует другое решение для вызова
setSelectedItemId()
onResume
, а не вonCreate