0

我想将 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();

在此处输入图像描述

4

2 回答 2

2

您需要将String类型传递给该setText()方法。当您传递整数类型时,它会在R参见:R)文件中查找具有指定 ID 的字符串资源。由于 ID 与文件中的任何项目都不匹配strings.xml,因此引发的异常是ResourceNotFoundException.

就像 Sree 说的,试试下面的代码,它保证可以工作。

txv.setText(String.valueOf(i)));
于 2016-01-21T04:35:34.690 回答
0

文档中它说setText(int resid)

因此,您为此方法传递的 int 值应该是资源 id(来自R.string静态成员)。这有点烦人,但我认为,Android Studio 会警告您有关参数上的@ResourceId注释。

如果您想将文本设置为 5,您应该String.valueOf(5)按照评论中的建议进行方法调用。

于 2016-01-21T04:37:28.540 回答