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

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

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

Я звоню addMapFragment() в . Тогда я звонка от запросов WebRequest, что называет addMapMapFragment(). The isAdded() метод не выглядит полезным вообще, так как я получаю сбой, говоря: "фрагмент уже добавлен:MapFragment[...]"

любой ключ?

2 ответов


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

getFragmentManager().executePendingTransactions();

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

Fragment.isAdded();

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


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