没有视图的片段在配置更改时崩溃
我有一个 UI,我需要在横向模式下显示(带视图),但在纵向模式下不显示。在纵向模式下,它应该仍然可用,但会改为使用显示其结果。Fragment
ListPopupWindow
我认为我可以通过使用横向布局的标签来处理这个问题,同时以编程方式创建片段(如果它没有启动(在我们处于纵向的情况下)。<fragment />
只要您从横向开始,这就可以正常工作,如果您以纵向方式创建片段,则当您在尝试将片段附加到布局时旋转模拟器时,应用程序将崩溃:
java.lang.IllegalStateException:Fragment 没有创建视图。at android.app.Activity.onCreateView(Activity.java:4095)
的文档似乎暗示它应该能够以这种方式处理它:Fragment.isInLayout()
如果布局通过标记作为活动视图层次结构的一部分包含在内,则返回 true。当通过标记创建片段时,这将始终如此,除非旧片段是从以前的状态恢复并且它不会出现在当前状态的布局中。
所以问题是如何正确地做到这一点,或者如果我错过了什么?
更新:
似乎没有像现在这样表现。如果已手动将 a 添加到容器,则返回 false。isInLayout()
Fragment
此外,如果将手动添加到容器,然后旋转(设备)到不包含该布局的布局,它将崩溃:Fragment
Caused by: java.lang.IllegalArgumentException: no view for id 0x7f060011 for fragment SearchFragment{4042f868 #2 id=0x7f060011 SearchFragment} at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:722)