设备api级别<11的DialogFragments

Joe*_*oey 9 android android-layout android-fragments android-3.0-honeycomb

我正在制作一个与1.6+兼容的蜂窝项目/前叉.

基于Google/Android提供的文档,我决定将我的所有片段构建起来,这些片段DialogFragment非常适合蜂窝...它使我可以灵活地将任何内容作为对话框或"全屏"元素.

我现在已经整合了兼容工具包,并将我的导入和方法调用移到了那里.现在我在2.3我试图发起一个相同的意图,但我收到这个问题:

java.lang.IllegalStateException: DialogFragment can not be attached to a container view
Run Code Online (Sandbox Code Playgroud)

该文档DialogFragment表明它可以Fragment在您不需要对话框/弹出功能时执行.

Chr*_*nes 9

我设法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;
}
Run Code Online (Sandbox Code Playgroud)

基本上,他们确实写了支持,但是在dialog/embedded之间切换的切换不起作用.

所以这里我们默认嵌入,然后设置为在我们显示之前显示为对话框.