2

当我尝试在我的三星 Note II 上运行我的应用程序时,我得到了这条线的 ResourceNotFoundException

setContentView(R.layout.activity_main);

但是,当我在模拟器或三星 Note 10.1 上运行它时,我没有遇到此异常。

两者都在运行 Jellybean,我的 xml 文件位于名为 的文件夹中layout-land,XML 文件就在其中。我尝试清理我的项目并重新构建,但它仍然不起作用。

有谁知道出了什么问题?

让我知道我是否可以提供更多信息。谢谢!

01-27 22:11:32.975: E/AndroidRuntime(28330): FATAL EXCEPTION: main
01-27 22:11:32.975: E/AndroidRuntime(28330): java.lang.RuntimeException: Unable to start activity        ComponentInfo{com.ventusthecorgi.hungrycorgi/com.mypackage.app.MainActivity}: android.content.res.Resources$NotFoundException: Resource ID #0x7f030003
01-27 22:11:32.975: E/AndroidRuntime(28330):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2100)
01-27 22:11:32.975: E/AndroidRuntime(28330):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2125)
01-27 22:11:32.975: E/AndroidRuntime(28330):    at android.app.ActivityThread.access$600(ActivityThread.java:140)
01-27 22:11:32.975: E/AndroidRuntime(28330):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1227)
01-27 22:11:32.975: E/AndroidRuntime(28330):    at android.os.Handler.dispatchMessage(Handler.java:99)
01-27 22:11:32.975: E/AndroidRuntime(28330):    at android.os.Looper.loop(Looper.java:137)
01-27 22:11:32.975: E/AndroidRuntime(28330):    at android.app.ActivityThread.main(ActivityThread.java:4898)
01-27 22:11:32.975: E/AndroidRuntime(28330):    at java.lang.reflect.Method.invokeNative(Native Method)
01-27 22:11:32.975: E/AndroidRuntime(28330):    at java.lang.reflect.Method.invoke(Method.java:511)
01-27 22:11:32.975: E/AndroidRuntime(28330):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1008)
01-27 22:11:32.975: E/AndroidRuntime(28330):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:775)
01-27 22:11:32.975: E/AndroidRuntime(28330):    at dalvik.system.NativeStart.main(Native Method)
01-27 22:11:32.975: E/AndroidRuntime(28330): Caused by: android.content.res.Resources$NotFoundException: Resource ID #0x7f030003
01-27 22:11:32.975: E/AndroidRuntime(28330):    at android.content.res.Resources.getValue(Resources.java:1026)
01-27 22:11:32.975: E/AndroidRuntime(28330):    at android.content.res.Resources.loadXmlResourceParser(Resources.java:2131)
01-27 22:11:32.975: E/AndroidRuntime(28330):    at android.content.res.Resources.getLayout(Resources.java:865)
01-27 22:11:32.975: E/AndroidRuntime(28330):    at android.view.LayoutInflater.inflate(LayoutInflater.java:394)
01-27 22:11:32.975: E/AndroidRuntime(28330):    at android.view.LayoutInflater.inflate(LayoutInflater.java:352)
01-27 22:11:32.975: E/AndroidRuntime(28330):    at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:307)
01-27 22:11:32.975: E/AndroidRuntime(28330):    at android.app.Activity.setContentView(Activity.java:1916)
01-27 22:11:32.975: E/AndroidRuntime(28330):    at com.ventusthecorgi.hungrycorgi.MainActivity.onCreate(MainActivity.java:22)
01-27 22:11:32.975: E/AndroidRuntime(28330):    at android.app.Activity.performCreate(Activity.java:5191)
01-27 22:11:32.975: E/AndroidRuntime(28330):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1094)
01-27 22:11:32.975: E/AndroidRuntime(28330):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2064)
4

3 回答 3

5

我怀疑您的问题布局文件layout-land目录中(基于您在问题中所写的内容)。这意味着如果设备以纵向模式启动,Android 将在layout-port目录中搜索您的布局,然后 layout,而不是 layout-land。我可能错了,但我的直觉是您的三星 Note II 以纵向模式启动,因此看不到布局文件。

您必须提供后备布局资源。要么将布局从layout-landto复制到layout-port并针对纵向模式进行相应的修改,要么将其复制到layout目录作为后备布局。

于 2013-01-28T06:26:19.507 回答
1

AFAIK,三星 Galaxy Note II 的默认方向不是横向

尝试将一组资源文件放在 /res/layout 中,用于那些不符合特定布局特征的设备

于 2013-01-28T06:25:36.603 回答
1

xml 文件位于布局域中,因此它们仅在应用程序/设备处于横向模式时有效。尝试将它们移动/复制到只是布局,你应该没问题。您可能希望将通用布局放在布局目录中,并将横向优化布局放在 layout-land 中(或查看其他资源选择标准)。

于 2013-01-28T06:25:50.373 回答