所以我不是编程,Java或Android开发方面的新手,但我遇到了一个奇怪的问题:我已经提出了一个非常先进的应用程序并将其投放市场。
目前我有超过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"));
崩溃会消失吗?
答案 0 :(得分:2)
我遇到了同样的问题,我通过创建名为“layout-small”的布局文件夹来修复它。
根据分辨率我只创建了2个文件夹“layout-large”和“layout-medium”。但很少有手机具有较低的分辨率,因此根据分辨率找不到合适的资源。 Android OS根据分辨率呈现xml资源。它会找到所需文件夹中的资源。
95%以上的Android手机,其分辨率与“layout-normal”文件夹相匹配。但仍有手机具有较低的分辨率。因此出现了这个问题。
更多详情:http://developer.android.com/guide/practices/screens_support.html
希望这有助于解决您的问题。
答案 1 :(得分:0)
如果您从活动的setContentView(R.layout.some_custom_layout)
方法调用onCreate
,只要您的应用编译(并且我认为它确实存在),您应该会很好。
AFAIK通过以下方式访问您的字符串资源:
someTxtView.setText(R.string.some_string)
不是要走的路。你应该这样做:
getContext().getResources().getString(R.string.some_string)
答案 2 :(得分:0)
除
setContentView(R.layout.some_custom_layout);
尝试使用
setContentView(yourpackagename.R.layout.some_custom_layout);
这对我帮了很多次。
答案 3 :(得分:0)
我有一个建议。你是否在你的布局中使用了android的资源,比如drawables等,例如
机器人:化背景= “@机器人:可拉伸/ some_android_drawable”
也许某些供应商不提供其固件的一些资源,因此您的应用程序崩溃。 例如this issue
答案 4 :(得分:0)
someTxtView.setText(R.string.some_string)
您可以将整数值设置为文本。它不正确,因为它在此值上搜索资源。你必须写
someTextView.setText(getResources().getText(R.string.blabla));