如何防止多次添加片段?

Tom*_*ney 7 android android-ui android-fragments android-button

将UI元素(例如按钮)轻触时,将片段添加到布局中是很常见的.如果用户非常快速地多次点击按钮,则可能会多次添加片段,从而导致各种问题.

如何防止这种情况?

Tom*_*ney 14

我创建了一个帮助方法,确保只有在片段尚不存在时才添加它:

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();
    }
}
Run Code Online (Sandbox Code Playgroud)

从Activity或其他片段简单调用:

addFragmentOnlyOnce(getFragmentManager(), myFragment, "myTag");
Run Code Online (Sandbox Code Playgroud)

这适用于android.app.*和android.support.app.*包.