E/AndroidRuntime(1288): Caused by: android.content.res.Resources$NotFoundException: Resource ID #0x 7f030002
解决办法:
1
如果遇到这个问题,首先考虑以下原因:
你是否在setText()方法中设置了一个int型变量,比如setText(10)。
这样Android系统就会主动去资源文件当中寻找,但是它不是一个资源文件ID, 所以就会报出这个bug。
解决办法:将int型业务数据,转换成String类型即可,比如setText(10+“”);
eg:
1、异常信息:Caused By: android.content.res.Resources$NotFoundException:String resource ID #0x86
相关代码是:
private TextView tv_height = null;
int height = bundle.getInt("myheight");
tv_height.setText(height);//注意要转型,不然报找不到String ID
问题原因:
显示是运行时找不到一个字符串导致的异常,最后费了半天劲,发现是因为在调用setText(String str)方法时,传的是一个int型数据,未对其转为String类型,可能是Android中未实行对它的自动转型,这里可以改为: tv_height.setText(""+height); 解决此异常。
2、通过Resources对象,获取资源文件中定义的常量的方法。
一般在资源文件中常常把一些常量定义到XML文件中,例如:drawable、string、color等,若要在代码中获取这些量的值,需要通过如下代码来实现:
Resources res = getResources();
res.getString(R.string.nameid);
res.getDrawable(R.drawable.id);
res.getColor(R.color.id);
*************************
根本原因:
見API:
final void setText(int resid)
final void setText(char[] text, int start, int len)
Sets the TextView to display the specified slice of the specified char array.
final void setText(int resid, TextView.BufferType type)
final void setText(CharSequence text) Sets the string value of the TextView.
如果我們setText()方法裏是int型的話,會調 setText(int resid)這個方法,而不是 setText(CharSequence text)所以才會出現Resources$NotFoundException: String resource ID 這種錯誤
****************************
还有其他办法,可能跟上面不是一个问题,但是也是这样的提示,,就本人自己的经验,如下:
1今天遇到类似这样问题,后来在在找到解决方案,把AndroidManifest.xml里面的版本改为8(我原来的是10),问题是解决了,但是不是很清楚为什么这样解决,
2把现在这个工程移除掉,把原来的工程的androidmanifest.xml文件考到现在的这个工程就可以了,不改版本号也可以运行。主要是你原来的那个工程占用现在的这个虚拟机,不能正常加载现在的这个工程。
3