4

特定のコールバックが呼び出されたときにDialogFragmentをユーザーに表示したいと思います。私の問題は、リスナーへの複数の呼び出しが同時に行われ、fragmentmanagerが複数のフラグメントを表示することがあることです。次のコードを使用しています

    if (getSupportFragmentManager().findFragmentByTag("testFragment") == null) {
        getSupportFragmentManager().beginTransaction()
                .add(new MyFragment(), "testFragment")
                .commit();
        Log.e("TAG", "Show! "+(getSupportFragmentManager()
                    .findFragmentByTag("testFragment") == null));
    } 

最後の行のログメッセージが示すように、FragmentTransactionをコミットした後、findFragmentByTagがnullを返す短い期間があります。それで、たとえば、コミットする最後の呼び出しのミリタイムを節約し、1秒以内に後の呼び出しを無視するよりも、メッセージを1回だけエレガントに表示する方法はありますか?

4

1 に答える 1

12

コミットした直後に呼び出すgetSupportFragmentManager().executePendingTransactions()と、フラグメントマネージャはフラグメントをすぐにコミットするように強制され、その後の呼び出しでfindFragmentByTag("testFragment")nullが返されないようにする必要があります。

于 2012-09-10T16:04:22.403 に答える