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.
문제
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?
해결책
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.
다른 팁
Instead, check getSupportFragmentManager.findFragmentById() and see if you are getting the expected fragment back. If now you can add and commit.