Подтвердить что ты не робот

Фрагмент isAdded() возвращает false на уже добавленном фрагменте

У меня есть эта аккуратная функция:

private void addMapFragment(){
    if(!mapFragment.isAdded()){
        FragmentTransaction ft = getFragmentManager().beginTransaction();
        ft.add(R.id.mapContainer, mapFragment);
        ft.commit();
    }
}

Я вызываю addMapFragment() в своей деятельности onCreate(). Затем у меня есть обратный вызов из веб-запроса, который вызывает addMapMapFragment(). Метод isAdded() не выглядит вообще полезным, так как я получаю сообщение об ошибке "Добавленный фрагмент: MapFragment[...]"

Любая подсказка?

4b9b3361

Ответ 1

FragmentTransactions объявлены асинхронно. Поэтому вам нужно позвонить

getFragmentManager().executePendingTransactions();

до вы вызываете

Fragment.isAdded();

Таким образом, вы можете убедиться, что все обновлено.

Ответ 2

Вместо этого проверьте getSupportFragmentManager.findFragmentById() и посмотрите, верните ли вы ожидаемый фрагмент. Если теперь вы можете добавить и зафиксировать.