获取 android.content.res.Resources$NotFoundException:即使资源存在于 android 中也会出现异常

问题描述 投票:0回答:17

请让我知道我哪里出错了以获得错误。

我正在创建一个应用程序,其活动之一仅处于横向模式。所以我在AndroidManifest.xml文件

中添加了以下内容
<activity android:name=".LandScapeImageActivity" android:screenOrientation="landscape"></activity>

我创建了一个像

这样的文件夹

/res/布局土地

并在其中添加一个名为 see_today_landscape_layout 的布局。

并在

onCreate()
中我添加了以下内容

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.see_today_landscape_layout);
....
}

但是当我运行我的应用程序时,我收到以下错误

02-06 13:46:14.358: E/AndroidRuntime(13286): FATAL EXCEPTION: main
02-06 13:46:14.358: E/AndroidRuntime(13286): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.mid.kew.activities/com.mid.kew.activities.LandScapeImageActivity}: android.content.res.Resources$NotFoundException: Resource ID #0x7f03002b
02-06 13:46:14.358: E/AndroidRuntime(13286):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2787)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2803)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:4066)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at android.app.ActivityThread.access$2400(ActivityThread.java:135)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2140)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at android.os.Handler.dispatchMessage(Handler.java:99)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at android.os.Looper.loop(Looper.java:144)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at android.app.ActivityThread.main(ActivityThread.java:4937)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at java.lang.reflect.Method.invokeNative(Native Method)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at java.lang.reflect.Method.invoke(Method.java:521)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at dalvik.system.NativeStart.main(Native Method)
02-06 13:46:14.358: E/AndroidRuntime(13286): Caused by: android.content.res.Resources$NotFoundException: Resource ID #0x7f03002b
02-06 13:46:14.358: E/AndroidRuntime(13286):    at android.content.res.Resources.getValue(Resources.java:892)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at android.content.res.Resources.loadXmlResourceParser(Resources.java:1869)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at android.content.res.Resources.getLayout(Resources.java:731)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at android.view.LayoutInflater.inflate(LayoutInflater.java:318)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at android.view.LayoutInflater.inflate(LayoutInflater.java:276)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:207)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at android.app.Activity.setContentView(Activity.java:1654)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at com.mid.kew.activities.LandScapeImageActivity.onCreate(LandScapeImageActivity.java:103)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1069)
02-06 13:46:14.358: E/AndroidRuntime(13286):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2751)
02-06 13:46:14.358: E/AndroidRuntime(13286):    ... 12 more

我交叉检查了R.java,它具有 ID 为 7f03002b 的资源,异常正在寻找该资源,并且它存在于其中...

我清理并重建了项目大约 5 次,但问题仍然出现。

奇怪的是,昨天还可以,今天就不行了。代码是一样的。

android exception layout resources landscape
17个回答
239
投票

对于我的情况,原因是采用

int
参数作为
TextView
。让我举个例子吧

int i = 5;
myTextView.setText(i);

获取上面的错误信息。

这可以通过将

int
转换为
String
来解决,如下所示

myTextView.setText(String.valueOf(i));

当您编写

int
时,它需要的是资源而不是您正在编写的文本。因此,在 Android 中将
int
设置为
String
时要小心。


38
投票
  1. 在 Eclipse 中,转到项目 > 清理...
  2. 选择您的项目,然后按确定
  3. 重新启动应用程序

如果再次发生这种情况,请删除 r.java 文件。它会自动生成。


14
投票

由于您要显式设置布局,因此您可能需要尝试将其放入默认的 /layout 文件夹中,而不是 /layout-land 中,因为如果您希望 Android 自动为您处理旋转,那么您可能需要尝试将其放入默认的 /layout 文件夹中。


11
投票

尝试将布局 xml 从

res/layout-land
移动到
res/layout
文件夹


4
投票

我刚刚在 Android 6 上收到此错误。 我将所有可绘制对象从可绘制-v24 移动到可绘制文件夹,错误终于消失了。


2
投票

发生这种情况的原因可能是手机中使用了不同的语言,而您的代码没有对应的资源。例如,您的首选项.xml 放置在 xml-en 中,并且您尝试在选择了法语的手机中运行您的应用程序,该应用程序将崩溃。


2
投票

我从另一个原因中得到这个错误:

我有文件

res/xml/data.xml
,我试图用
Resources
类加载它,如下所示:

Resources.getSystem().getXml(R.xml.data);

但是,这是不正确的,因为该方法

Resources.getSystem()
返回一个全局共享资源对象,该对象仅提供对系统资源的访问。

正确的做法如下(从Activity内部):

this.getResources().getXml(R.xml.data);

2
投票

就我而言,我的 build.gradle 中应用程序模块的构建工具版本在旧项目中已过时。更新它解决了问题:

android {
    ...
    buildToolsVersion "19.0.1"
    ...

更新到最新的构建工具版本(25.0.1)并同步项目,一切又恢复正常了。


2
投票

检查以确保您的导入正确。我遇到了类似的问题,其中

R
指向 Android 系统
R
文件,而不是我本地的文件。


1
投票

我删除了项目内的文件夹

build
。在 Android Studio 中清理并重建后。然后更正了 build.gradle 和 AndroidManifest 中的错误。


1
投票

这也会引起一些麻烦: 一不小心,我的一个布局停放在我的平板电脑资源文件夹中,因此我仅在手机布局中遇到此错误。手机布局根本没有合适的布局文件。

将布局文件移动到正确的标准文件夹并进行以下项目重建后,我再次工作。


0
投票

确保您指向的 R 是正确的。我遇到了一个与此非常相似的问题,其中 Eclipse 插入了一个指向 System R 文件而不是项目文件的导入。这花了很多心思。希望这有帮助。


0
投票

您已在 xml 中将屏幕方向设置为横向。如果您使用 eclipse 生成此文件,它将在 res/layout-land/ 文件夹下创建。但是当您以纵向模式打开 Activity 时,应用程序将在 res/layout-port/ 文件夹或常规 res/layout/ 中搜索 xml 。 如果您没有纵向模式的 xml,您的应用程序将会崩溃。


0
投票

我已经通过这种方式修复了:

在您的资源目录名称中创建一个文件夹

"drawable-nodpi"
,然后将您的所有资源从其他可绘制目录中移动到此目录中。

现在清理您的项目,然后重建。再次运行,希望这次能正常工作,没有任何资源未找到异常。


0
投票

当我尝试使用 getInt("ID") 从 One Intent 访问 Bundle 数据时,出现此错误。

我通过使用 getString("ID") 解决了这个问题。

从 Activity1 我有

Intent intent=new Intent(this,ActivityB.class);
intent.putExtra("data",data)// 
startActivity(intent);

关于活动 B,

Bundle bundle=getIntent().getExtras();
if(extras!=null){
// int x=extras.getInt("Data"); This Line gave me error int 
x=Integer.parseInt(extras.getString("Data")); // This solved the problem.
}

0
投票

对我来说,缓存失效和重新启动不起作用。我删除了 .idea 和 .gradle 文件夹。如果您这样做,请不要忘记诸如构建日志之类的东西可能会消失。


0
投票
Caused by: android.content.res.Resources$NotFoundException: Resource ID #0x7f0d0020
Add android:screenOrientation="landscape" in each activity having layout-land in manifest file to over come this issue
© www.soinside.com 2019 - 2024. All rights reserved.