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

What is difference between FragmentTransaction.add().commit() and DialogFragment.show()?

为了显示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");
            }

我应该在什么时候使用哪个?或者两者相同?

几乎相同。 show 从您作为参数提供的 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()

时重置一些标志