Выбранный Android элемент навигации возвращается к первому элементу навигации

#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