如何防止多次添加片段?

时间:2012-12-26 07:37:12

标签: android android-fragments android-ui android-button

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

如何防止这种情况?

2 个答案:

答案 0 :(得分:13)

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

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。*包。

答案 1 :(得分:0)

这是我的解决方案,我尝试通过多次快速点击按钮来单击显示对话框片段。

            FragmentManager fm = getSupportFragmentManager();
            Fragment oldFragment = fm.findFragmentByTag("wait_modal");

            if(oldFragment != null && oldFragment.isAdded())
                return;

            if(oldFragment == null && !please_wait_modal.isAdded() && !please_wait_modal.isVisible()){
                fm.executePendingTransactions();
                please_wait_modal.show(fm,"wait_modal");
            }