-1

我开始一个threadactivity. 中有一个构造函数textview。更新运行时thread没有错误。setTexttextview

但是,如果我新建一个thread不带参数的,然后setTextView (TextView)setText()运行.. 有错误。

为什么会出现这个?

编辑:我的代码

package extthread;

import android.widget.TextView;

public class MyUpdateUIThread extends Thread {

private TextView textView1;

public MyUpdateUIThread(TextView textView1) {
super();
this.textView1 = textView1;
}

@Override
public void run() {
super.run();
textView1.setText("zzzzzzzzzzzzzz");
}

}

------------------------------
package testtest.test.run;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
import extthread.MyUpdateUIThread;

public class Main extends Activity {
TextView textView;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

textView = (TextView) this.findViewById(R.id.textView1);
Thread thread = new Thread(new MyUpdateUIThread(textView));
thread.start();

}
};
4

1 回答 1

2

在 Thread 的 run 方法中使用runOnUiThread将 TextView 更新为:

Your_Current_Activity.this.runOnUiThread(new Runnable() {
    public void run() {

             //update textview here
    }
});

编辑 :

就像您当前的代码一样,线程来自单独的类。那么您需要将 Main Activity 实例传递给 Thread 类以runOnUiThreadMyUpdateUIThreadthread 中访问。将您的MyUpdateUIThread类构造函数更改为:

private TextView textView1;
Activity activity;
public MyUpdateUIThread(TextView textView1,Activity activity) {
super();
this.textView1 = textView1;
this.activity=activity;
}

@Override
public void run() {
super.run();
activity.runOnUiThread(new Runnable() {
    public void run() {

       //update textview here
       textView1.setText("zzzzzzzzzzzzzz");
    }
});

}

MyUpdateUIThread并在 Main Activity 中创建对象:

Thread thread = new Thread(new MyUpdateUIThread(textView,Main.this));
于 2013-01-14T08:59:45.720 回答