Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Fragment isAdded() returns false on an already added Fragment

I have this neat function:

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

I'm calling addMapFragment() in my activity's onCreate(). I then have a callback from a webrequest that calls addMapMapFragment(). The isAdded() method doesn't look useful at all since I'm getting a crash saying "Fragment already added: MapFragment[...]"

Any clue?

like image 356
Lumbi Avatar asked Mar 18 '14 16:03

Lumbi


1 Answers

FragmentTransactions are committed asynchronously. Therefore, you need to call

getFragmentManager().executePendingTransactions();

before you call

Fragment.isAdded();

That way, you can make sure that everything is up to date.

like image 112
Philipp Jahoda Avatar answered Oct 18 '22 18:10

Philipp Jahoda