it-swarm.com.ru

Фрагмент 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[...]»

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

13
Lumbi

FragmentTransactions совершаются асинхронно . Поэтому вам нужно позвонить

getFragmentManager().executePendingTransactions();

до вы звоните 

Fragment.isAdded();

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

29
Philipp Jahoda

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

0
km86