9

ボタンなどの UI 要素がタップされたときに Fragment がレイアウトに追加されるのはよくあることです。ユーザーがボタンをすばやく複数回タップすると、フラグメントが複数回追加され、さまざまな問題が発生する可能性があります。

どうすればこれを防ぐことができますか?

4

2 に答える 2

16

フラグメントがまだ存在しない場合にのみフラグメントが追加されるようにするヘルパー メソッドを作成しました。

public static void addFragmentOnlyOnce(FragmentManager fragmentManager, Fragment fragment, String tag) {
    // Make sure the current transaction finishes first
    fragmentManager.executePendingTransactions();

    // If there is no fragment yet with this tag...
    if (fragmentManager.findFragmentByTag(tag) == null) {
        // Add it
        FragmentTransaction transaction = fragmentManager.beginTransaction();
        transaction.add(fragment, tag);
        transaction.commit();
    }
}

アクティビティまたは別のフラグメントからの単純な呼び出し:

addFragmentOnlyOnce(getFragmentManager(), myFragment, "myTag");

これは、android.app.* と android.support.app.* パッケージの両方で機能します。

于 2012-12-26T07:37:12.023 に答える