Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 定息_Android_Multithreading_Textview - Fatal编程技术网

Android 定息

Android 定息,android,multithreading,textview,Android,Multithreading,Textview,我想在fixedRate处使用处理程序post delaySetText,但我不能这样做,因为我得到了一个错误,即我无法更改与主线程不同的线程中的文本 我有一个静态文本存储在另一个类中,可以更改它,我想将TextView的文本每100毫秒设置为该文本 如何解决这个问题?在android中,您应该只在UI线程上操作UI元素。您可以使用asynctask、hander或runOnUiThread来实现这一点。后者是最简单的: runOnUiThread(new Runnable() { pu

我想在
fixedRate
处使用处理程序post delay
SetText
,但我不能这样做,因为我得到了一个错误,即我无法更改与主线程不同的线程中的文本

我有一个静态文本存储在另一个类中,可以更改它,我想将
TextView
的文本每100毫秒设置为该文本


如何解决这个问题?

在android中,您应该只在UI线程上操作UI元素。您可以使用asynctask、hander或runOnUiThread来实现这一点。后者是最简单的:

runOnUiThread(new Runnable() {
    public void run() {
        textview.setText("some text");
    }
}

安排一个计时器来完成任务

private static class UpdateText extends TimerTask {
            private final TextView tv;

            public UpdateText(TextView tv) {
                this.tv = tv;
            }

            @Override
            public void run() {
                tv.post(new Runnable() {

                    public void run() {
                        tv.setText(tv.getText() + "Append here");
                    }
                });
            }
onCreate
中执行此操作

tv.setText("Append here");
        setContentView(tv);

        Timer timing = new Timer();
        timing.schedule(new UpdateText(tv), 3000, 3000);