【发布时间】:2012-11-14 21:16:34
【问题描述】:
我有一个固定为横向的应用,在我的所有元素上使用以下属性:
android:screenOrientation="sensorLandscape"
android:configChanges="orientation|screenLayout"
我所有的活动布局文件都在 layout-land/ 文件夹中,而不是在 layout/
这一切都很好,但是在运行 Android 3.1 的 Galaxy Tab 上进行测试时,如果我在平板电脑处于纵向时启动应用程序,则会出现此异常:
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.myapp/com.myapp.MainMenu}: android.content.res.Resources$NotFoundException: Resource ID #0x7f030006
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1751)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1767)
at android.app.ActivityThread.access$1500(ActivityThread.java:122)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1005)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:132)
at android.app.ActivityThread.main(ActivityThread.java:4028)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:491)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:844)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:602)
at dalvik.system.NativeStart.main(Native Method)
Caused by: android.content.res.Resources$NotFoundException: Resource ID #0x7f030006
at android.content.res.Resources.getValue(Resources.java:1014)
at android.content.res.Resources.loadXmlResourceParser(Resources.java:2039)
at android.content.res.Resources.getLayout(Resources.java:853)
at android.view.LayoutInflater.inflate(LayoutInflater.java:389)
at android.view.LayoutInflater.inflate(LayoutInflater.java:347)
at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:242)
at android.app.Activity.setContentView(Activity.java:1780)
at com.myapp.MainMenu.onCreate(MainMenu.java:77)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1048)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1715)
... 11 more
这发生在我初始活动的 onCreate() 方法中对 setContentView() 的调用中:
setContentView(R.layout.mainmenu);
我可以通过将我的所有布局文件从 layout-land/ 复制到 layout/ 来解决问题,但这似乎不是一个很好的解决方案因为我现在有两组必须保持同步的布局文件。更奇怪的是,在异常发生之前记录 getRequestedOrientation() 的值显示返回 6 (ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE)。所以,我不知道为什么 setContentView() 没有查看 layout-land/
我在 2.3 手机上纵向启动应用程序时没有看到此问题,但在手机屏幕关闭时启动它会产生基本相同的异常,也可以通过将布局文件复制到 layout 来解决此问题/ .
有没有其他人看到这个错误?也许有更好的方法来解决它?
【问题讨论】:
标签: android