我在平板电脑应用中有一个活动,我想根据方向显示不同的片段。我认为最简单的方法就是定义两个不同的布局 XML 文件,一个用于横向,一个用于纵向。换句话说,我有 /layout/home.xml,它看起来像这样:
<LinearLayout android:orientation="horizontal">
<fragment class="com.foo.app.Frag1" android:id="frag1"/>
<fragment class="com.foo.app.Frag2" android:id="frag2"/>
</LinearLayout>
然后在 /layout-port/home.xml 中:
<LinearLayout android:orientation="vertical">
<fragment class="com.foo.app.Frag2" android:id="frag2"/>
<fragment class="com.foo.app.Frag3" android:id="frag3"/>
</LinearLayout>
当我运行它时,我可以从横向开始,然后转到纵向,一切都很好。但是,当我从纵向切换到横向时,应用程序崩溃并出现 android.content.res.Resources$NotFoundException,资源 ID 等于“frag3”。没错,就是在横向制作的时候找Frag3,那个模式下没有Frag3。这发生在 Activity.onCreate 堆栈期间,因此在我的任何代码有机会使应用程序崩溃之前。
片段不应该以这种方式工作吗?我需要改用 FragmentTransaction 吗?