我設法在兼容包的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之間切換的切換不起作用.
所以這里我們默認嵌入,然后設置為在我們顯示之前顯示為對話框.