我设法在兼容包的DialogFragment.java中正确修复了这个问题:
改变第74行:
boolean mShowsDialog = false;
注释掉第232行:// mShowsDialog = mContainerId == 0;
然后将两个show方法更改为:
public void show(FragmentManager manager, String tag) {
this.setShowsDialog(true);
FragmentTransaction ft = manager.beginTransaction();
ft.add(this, tag);
ft.commit();
}
// JavaDoc removed
public int show(FragmentTransaction transaction, String tag) {
this.setShowsDialog(true);
transaction.add(this, tag);
mRemoved = false;
mBackStackId = transaction.commit();
return mBackStackId;
}
基本上,他们确实写了支持,但是在dialog / embedded之间切换的切换不起作用.
所以这里我们默认嵌入,然后设置为在我们显示之前显示为对话框.