繁体   English   中英

不同方向的不同片段

[英]DIfferent fragments for different orientation

我在平板电脑应用程序中有一个活动,我想根据方向显示不同的碎片。 我认为最简单的方法就是定义两个不同的布局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吗?

没有看到代码就很难说 - 但是,Resources.NotFoundException通常意味着你试图错误地查找资产(想想R.layout.xx,R.drawable.xx等)。

也就是说,我尝试使用你的布局XML编写一个小应用程序,当我复制你的XML代码来测试它时,编译器向我大吼大叫硬编码字符串作为ID。 尝试将android:id属性的值切换为如下所示:

机器人:ID = “机器人:ID =” @ + ID / frag1"

这可能会解决问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM