要显示 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,正如您在代码 fragment 中看到的那样
public void show(FragmentManager manager, String tag) {
mDismissed = false;
mShownByMe = true;
FragmentTransaction ft = manager.beginTransaction();
ft.add(this, tag);
ft.commit();
}
唯一的区别是它们会在多次调用 show()
关于android - FragmentTransaction.add().commit() 和 DialogFragment.show() 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35912128/