Android资源未找到异常?

Bob*_*ke4 65 java android

我使用findViewById(id)有一个奇怪的问题.即使资源肯定存在,它也会找不到资源.它是另一个textview旁边的布局中的textview,我可以通过id查找其中一个textview,但另一个显示未找到的资源.有什么理由可能会发生这种情况吗?

小智 273

确保您实际上并不只是尝试将文本设置为数字并期望它自动转换为字符串.

  • 这正是我的情况,当我尝试将一个数字设置为一个由Eclipse生成的引用地址指向的TextView时.如果你这样做,那么你最终会改变目标`TextView`参考地址,从而产生这些错误.因此,您必须确保不将数字(或整数)放入TextView的`setText()`方法中. (4认同)
  • @androider我曾经使用`myTextView.setText(myInt +"");`我自己.但根据[THIS](http://stackoverflow.com/questions/653990/what-is-the-most-efficient-way-to-convert-an-int-to-a-string)它看起来像`myTextView .setText(Integer.toString(myInt));`是最有效的方法. (2认同)

Mik*_* dg 38

尝试清理项目或发布一些代码.

如果您使用Eclipse,有时会无法正确重新生成ID.这需要清理项目并有时刷新.


Roh*_*pta 26

抛出的异常消息不是很具描述性.很可能你试图将int值转换为String,应用下面的更改为我解决了问题.

修复前的代码:

 itemPrice.setText(foodMenuItems.get(position).getItemPrice());
Run Code Online (Sandbox Code Playgroud)

修复后的代码:

 itemPrice.setText(Integer.toString(foodMenuItems.get(position).getItemPrice()));
Run Code Online (Sandbox Code Playgroud)

  • 或者只是在你的int之前添加"" (2认同)

小智 17

只是为了澄清Terra Caines的答案,因为我看到它发生在人们身上很多; TextView和其他文本组件,有2个setText()函数,1个参数.

其中一个是带有一个String和一个带有int.该int显然是一个字符串资源,例如R.string.myString-这,对那些谁不知道,R.exm总是被表示为int.该字符串用于在那里放一个字符串.

所以例如我想把int x = 1;放在textView中.执行mTextView.setText(x); 将导致textView使用资源函数,因为可能没有id为1的资源,它将抛出异常Resource not found.如果你想在setText()函数中放入一个int或任何数字,请确保将其转换为String (x+"")(x.toString())将为你做的技巧.

希望它为人们节省了一些时间.


You*_*jae 10

textViewCount.setText(someArray.size()); 是我的问题.

只需致电toString();解决问题.

    Integer size = mSomeArray.size();
    textViewReplyCount.setText(size.toString());
Run Code Online (Sandbox Code Playgroud)