web-dev-qa-db-ja.com

フラグメントisAdded()は、すでに追加されているフラグメントに対してfalseを返します

私はこのきちんとした機能を持っています:

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

アクティビティのaddMapFragment()onCreate()を呼び出しています。次に、addMapMapFragment()を呼び出すWebリクエストからのコールバックがあります。 isAdded()メソッドは、「フラグメントはすでに追加されています:_MapFragment[...]_」というクラッシュが発生するため、まったく役に立ちません。

どんな手掛かり?

16
Lumbi

FragmentTransactionsがコミットされます非同期。したがって、電話する必要があります

getFragmentManager().executePendingTransactions();

あなたが呼び出す

Fragment.isAdded();

そうすれば、すべてが最新であるであることを確認できます。

32
Philipp Jahoda

代わりに、getSupportFragmentManager.findFragmentById()をチェックして、期待されるフラグメントが返されるかどうかを確認してください。今なら、追加してコミットできます。

0
km86