mic*_*elg 9 android android-3.0-honeycomb
我在平板电脑应用程序中有一个活动,我想根据方向显示不同的碎片.我认为最简单的方法就是定义两个不同的布局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>
Run Code Online (Sandbox Code Playgroud)
然后在/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>
Run Code Online (Sandbox Code Playgroud)
当我跑步时,我可以从风景开始去画像,一切都很好.但是,当我从纵向转到横向时,应用程序崩溃时会发生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 属性的值切换为如下所示:
android:id="android:id="@+id/frag1"
这可能会解决问题。
| 归档时间: |
|
| 查看次数: |
1453 次 |
| 最近记录: |