FragmentTransaction.add().commit()和DialogFragment.show()之间有什么区别?

4

展示DialogFragment,我可以使用以下两种方法:

        ProgressDialogFragment fragment = (ProgressDialogFragment) getFragmentManager().findFragmentByTag("progress_dialog");
        if (fragment == null) {
            fragment = ProgressDialogFragment.newInstance();
            fragment.setCancelable(false);
            getFragmentManager().beginTransaction()
                    .add(fragment, "progress_dialog")
                    .commitAllowingStateLoss();

        }

或者

            ProgressDialogFragment fragment = (ProgressDialogFragment) getFragmentManager().findFragmentByTag("progress_dialog");
            if (fragment == null) {
fragment.show(getFragmentManager().beginTransaction(), "progress_dialog");
            }
什么时候应该使用哪个?或者两者是相同的吗?
1个回答

4

这两个几乎是相同的。从您提供的参数FragmentManager中检索一个transaction,并像代码片段中所示调用add / commit。

   public void show(FragmentManager manager, String tag) {
        mDismissed = false;
        mShownByMe = true;
        FragmentTransaction ft = manager.beginTransaction();
        ft.add(this, tag);
        ft.commit();
    }
唯一的区别在于重复调用show()时,它们会重置一些标志。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,