无法在 runOnUiThread 中更改 UI

Cannot change UI in runOnUiThread

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

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

正如Sree所说,试试下面的代码,保证有效。

txv.setText(String.valueOf(i)));

documentation 中显示 setText(int resid)

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

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