我正在开发一个向后兼容1.6+的蜂窝项目/分支。
基于谷歌/安卓提供的文档,我决定在DialogFragment上构建我的所有片段,它在honeycomb...it上工作得很好,让我可以灵活地将任何东西放在对话框或“全屏”元素上。
我现在已经整合了兼容性工具包,并将我的导入和方法调用转移到了兼容性工具包中。现在我已经是2.3版本了,我正在尝试发起一个相同的意图,但是我收到了这个问题:
java.lang.IllegalStateException: DialogFragment can not be attached to a container viewDialogFragment的文档表明,当您不需要对话框/弹出功能时,它可以作为Fragment执行。
发布于 2011-09-27 04:05:09
我设法在兼容性包的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之间的切换不起作用。
因此,在这里我们默认设置为embedded,然后设置为在显示之前显示为对话框。
发布于 2013-12-24 19:56:30
请查看here,您可以使用android.support.v4.app.DialogFragment版本
发布于 2011-04-18 15:32:54
我也遇到过同样的问题。我从来没有找到一个“正确”的解决方案,但是你可以通过在OnCreateDialog()中设置对话框的主题来做同样的事情。通过将主题设置为android.R.style.Theme_Holo_DialogWhenLarge,对话框在大屏幕和xlarge屏幕上将显示为对话框,而在小屏幕和普通屏幕上将显示为全屏窗口。
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setStyle(STYLE_NO_TITLE, android.R.style.Theme_Holo_DialogWhenLarge);
}https://stackoverflow.com/questions/5637894
复制相似问题