我正在创建一个针对仅限横向模式的平板电脑用户的应用。因此,我在res
中创建了一个名为layout-xlarge-land
的文件夹,并将所有layout xml
个文件放入其中,并将layout folder
保留为空。我还在清单文件中设置了支持屏幕属性
<supports-screens
android:anyDensity="true"
android:largeScreens="true"
android:xlargeScreens="true"
android:normalScreens="false"
android:smallScreens="false" />
我还将所有活动的方向设置为横向
activity
android:name=".HomeActivity"
android:label="@string/title_activity_main"
android:screenOrientation="landscape">
</activity>
当我启动应用程序时,它不会开始显示意外停止的消息。
但是,当我将所有layout xml
个文件放入layout folder
时,我的应用程序运行正常。
为什么会出现这种行为?在我看来Android system
应首先查看layout-xlarge-land
文件夹以获取用户界面。如果没有找到,那么请查看'布局文件夹'。
有人可以解释我是对还是错?
logcat的:
08-29 12:06:15.040: E/AndroidRuntime(3468): java.lang.RuntimeException: Unable to
start activity ComponentInfo{com.abs.qpr/com.abs.qpr.LauncherActivity}:
android.content.res.Resources$NotFoundException: Resource ID #0x7f030001
08-29 12:06:15.040: E/AndroidRuntime(3468): at
android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1751)
08-29 12:06:15.040: E/AndroidRuntime(3468): at
android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1767)
08-29 12:06:15.040: E/AndroidRuntime(3468): at
android.app.ActivityThread.access$1500(ActivityThread.java:122)
08-29 12:06:15.040: E/AndroidRuntime(3468): at
android.app.ActivityThread$H.handleMessage(ActivityThread.java:1005)
08-29 12:06:15.040: E/AndroidRuntime(3468): at
android.os.Handler.dispatchMessage(Handler.java:99)
08-29 12:06:15.040: E/AndroidRuntime(3468): at
android.os.Looper.loop(Looper.java:132)
08-29 12:06:15.040: E/AndroidRuntime(3468): at
android.app.ActivityThread.main(ActivityThread.java:4028)
08-29 12:06:15.040: E/AndroidRuntime(3468): at
java.lang.reflect.Method.invokeNative(Native Method)
08-29 12:06:15.040: E/AndroidRuntime(3468): at
java.lang.reflect.Method.invoke(Method.java:491)
08-29 12:06:15.040: E/AndroidRuntime(3468): at
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:844)
08-29 12:06:15.040: E/AndroidRuntime(3468): at
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:602)
08-29 12:06:15.040: E/AndroidRuntime(3468): at
dalvik.system.NativeStart.main(Native Method)
08-29 12:06:15.040: E/AndroidRuntime(3468): Caused by:
android.content.res.Resources$NotFoundException: Resource ID #0x7f030001
08-29 12:06:15.040: E/AndroidRuntime(3468): at
android.content.res.Resources.getValue(Resources.java:1014)
08-29 12:06:15.040: E/AndroidRuntime(3468): at
android.content.res.Resources.loadXmlResourceParser(Resources.java:2039)
08-29 12:06:15.040: E/AndroidRuntime(3468): at
android.content.res.Resources.getLayout(Resources.java:853)
08-29 12:06:15.040: E/AndroidRuntime(3468): at
android.view.LayoutInflater.inflate(LayoutInflater.java:389)
08-29 12:06:15.040: E/AndroidRuntime(3468): at
android.view.LayoutInflater.inflate(LayoutInflater.java:347)
08-29 12:06:15.040: E/AndroidRuntime(3468): at
com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:245)
08-29 12:06:15.040: E/AndroidRuntime(3468): at
android.app.Activity.setContentView(Activity.java:1780)
08-29 12:06:15.040: E/AndroidRuntime(3468): at
com.abs.qpr.LauncherActivity.onCreate(LauncherActivity.java:17)
08-29 12:06:15.040: E/AndroidRuntime(3468): at
android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1048)
08-29 12:06:15.040: E/AndroidRuntime(3468): at
android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1715)
08-29 12:06:15.040: E/AndroidRuntime(3468): ... 11 more`
答案 0 :(得分:1)
正如其他用户提到layout-xlarge-land
支持的API级别高于9.随着清单的更改,您还必须将构建目标设置为2.3我猜。
项目 - &gt;属性 - &gt; android - &gt;将目标更改为2.3
答案 1 :(得分:0)
尝试添加此内容。
android:xlargeScreens="true"
android:anyDensity="true"
答案 2 :(得分:0)
<supports-screens android:resizeable=["true"| "false"]
android:smallScreens=["true" | "false"]
android:normalScreens=["true" | "false"]
android:largeScreens=["true" | "false"]
android:xlargeScreens=["true" | "false"]
android:anyDensity=["true" | "false"]
android:requiresSmallestWidthDp="integer"
android:compatibleWidthLimitDp="integer"
android:largestWidthLimitDp="integer"/>
check this link once
http://developer.android.com/guide/topics/manifest/supports-screens-element.html
答案 3 :(得分:0)
正如layout-xlarge-land
一样,您还应声明支持xlarge
屏幕,而不仅仅是large
个屏幕。因此,android:largeScreens="true"
添加<supports-screens>
。
答案 4 :(得分:0)
我得到了解决方案。您必须在layout xml
文件夹中的Launcher Activity
文件夹中至少保留一个ie layout
文件,其余layout xml
文件可以保留在layout-xlarge-land
内文件夹中。