首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >设备应用编程接口级别< 11的DialogFragments

设备应用编程接口级别< 11的DialogFragments
EN

Stack Overflow用户
提问于 2011-04-12 23:39:26
回答 5查看 8.2K关注 0票数 9

我正在开发一个向后兼容1.6+的蜂窝项目/分支。

基于谷歌/安卓提供的文档,我决定在DialogFragment上构建我的所有片段,它在honeycomb...it上工作得很好,让我可以灵活地将任何东西放在对话框或“全屏”元素上。

我现在已经整合了兼容性工具包,并将我的导入和方法调用转移到了兼容性工具包中。现在我已经是2.3版本了,我正在尝试发起一个相同的意图,但是我收到了这个问题:

代码语言:javascript
复制
java.lang.IllegalStateException: DialogFragment can not be attached to a container view

DialogFragment的文档表明,当您不需要对话框/弹出功能时,它可以作为Fragment执行。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-09-27 04:05:09

我设法在兼容性包的DialogFragment.java中正确修复了这个问题:

更改第74行:boolean mShowsDialog = false;

注释掉第232行://mShowsDialog = mContainerId == 0;

然后将两个show方法更改为:

代码语言:javascript
复制
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之间的切换不起作用。

因此,在这里我们默认设置为embedded,然后设置为在显示之前显示为对话框。

票数 9
EN

Stack Overflow用户

发布于 2013-12-24 19:56:30

请查看here,您可以使用android.support.v4.app.DialogFragment版本

票数 3
EN

Stack Overflow用户

发布于 2011-04-18 15:32:54

我也遇到过同样的问题。我从来没有找到一个“正确”的解决方案,但是你可以通过在OnCreateDialog()中设置对话框的主题来做同样的事情。通过将主题设置为android.R.style.Theme_Holo_DialogWhenLarge,对话框在大屏幕和xlarge屏幕上将显示为对话框,而在小屏幕和普通屏幕上将显示为全屏窗口。

代码语言:javascript
复制
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setStyle(STYLE_NO_TITLE, android.R.style.Theme_Holo_DialogWhenLarge);
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5637894

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档