我希望将TextView内容更改为线程中的计算结果,但是在执行时会崩溃。这是我的代码。
new Thread(new Runnable() {
public void run() {
while (i < 5) {
i++;
}
getActivity().runOnUiThread(new Runnable() {
public void run() {
TextView txv = (TextView) getView().findViewById(R.id.txvone);
Log.d("123","i = "+ i);
txv.setText(i);//CRASH!!!
}
});
}
}).start();
答案 0 :(得分:2)
您需要将String
类型传递给setText()
方法。传递整数类型时,它会对R
(see : R)文件执行查找,以查找具有指定ID的字符串资源。由于ID与strings.xml
文件中的任何项都不匹配,因此抛出的异常为ResourceNotFoundException
。
如同Sree所说,试试下面的代码,保证可以正常工作。
txv.setText(String.valueOf(i)));
答案 1 :(得分:0)
在documentation中说setText(int resid)
。
因此,对于此方法传递的int值应该是资源ID(来自R.string
静态成员的一个)。这有点烦人,但我认为,Android Studio会警告你有关参数的@ResourceId
注释。
如果您要将文字设置为5,则应按照评论中的建议进行String.valueOf(5)
方法调用。