2011-12-04 143 views
0

所以我在编程,Java或Android开发中并不是这样的新手,但是我遇到了一个奇怪的问题:我已经提出了一个相当先进的应用程序,并将其应用于市场。Android Resource not found异常

现在我有超过1000个安装,并且我有大约4或5个关于ResourceNotFoundException的崩溃报告。最奇怪的是,它崩溃上线是

setContentView(R.layout.some_custom_layout) 

在代码中我一直提到的资源由

someTxtView.setText(R.string.some_string) 

所以我如果我用疑惑

mContext.getResources().getDrawable(mContext.getResources().getIdentifier("some_string", "string", "my.example.package")); 

会坠毁消失了?

回答

2

我面临同样的问题,我通过创建名为“layout-small”的布局文件夹来修复它。

根据分辨率我只创建了2个文件夹“layout-large”和“layout-medium”。但很少有手机的分辨率较低,因此无法根据分辨率找到合适的资源。 Android OS根据分辨率呈现xml资源。它会查找所需文件夹中的资源。

95%具有匹配“layout-normal”文件夹的分辨率的Android手机。但仍然有分辨率较低的电话。因此发生了这个问题。

欲了解更多详情:http://developer.android.com/guide/practices/screens_support.html

希望这有助于你的问题。

+0

我知道这是旧的,但花了至少3天在这问题。非常感谢你,你帮助了我。我从来没有想过这么简单 – user3004826

0

如果您从活动的onCreate方法调用setContentView(R.layout.some_custom_layout),只要您的应用程序编译(我假设它),您应该会很好。

AFAIK通过访问您的字符串资源:

someTxtView.setText(R.string.some_string) 

是不是要走的路。你应该这样做:

getContext().getResources().getString(R.string.some_string) 
+0

它编译和最奇怪的是,在大多数情况下(99%)它不会崩溃,它很好。但是,由于这个错误,有百分之一的用户无法启动应用程序。我想知道可以做些什么。 – Norbert

+0

但你有没有尝试以我提到的方式访问你的字符串资源?我认为你访问你的字符串的方式可能是错误的。 –

+0

字符串访问示例只是一个例子,我还没有看到一个报告,它实际上在那里崩溃。我的意思是说,我使用资源ID的每一处都使用了“R” – Norbert

0

除了

setContentView(R.layout.some_custom_layout); 

使用

setContentView(yourpackagename.R.layout.some_custom_layout); 

,帮助我很多次尝试。

+0

从来没有想过,我会尝试一下,看看是否有帮助。谢谢。 – Norbert

+0

NP诺伯特......:DA很多次帮助了我...... – Markonato

+2

这将有助于唯一的一次是,如果你已经导入android.R而不是你的PackageName.R – Sojurn

0

我有一个建议。你在你的布局中使用的Android secific资源,如可绘制或东西,例如

机器人:研究背景= “@机器人:可绘制/ some_android_drawable”

也许有些供应商不提供一些资源与他们的固件,所以你的应用崩溃。 例如this issue

0
someTxtView.setText(R.string.some_string) 

在那里你设置整数值为文本。它不正确,因为它在这个值上搜索resousre。你必须写

someTextView.setText(getResources().getText(R.string.blabla)); 
相关问题