android 给textview设置文本崩溃了


随便写了一段代码,在线程里面给textview设置文本,有时居然会导致程序崩溃,怎么回事?代码:

   
  public TextView pc;
  

oncreate(..) {
setContentView(R.layout.main);
pc = new TextView(context);
Thread t =new Thread() {
public void run() {
pc.setText("test");
}};
t.start();

怎么修改?

GUI开发 Android

damage 12 years, 2 months ago

错误信息大概的意思就是只有创建它(你代码中的 pc )的线程,才能去观摩其节点相关信息。 翻译的可能不是很好。
不过保持着只有主线程能修改UI的这个点,你这么写肯定是不行的, 你pc.setText("test");界面肯定要刷新吖, 你是在子线程里面去刷新的,肯定不行。
给来一个handler. 通过主线程的looper 构建一个handler ,以消息队列的方式,把需要更新的消息传递给主线程吧。
这是其中的一种。。
public TextView pc;
public Handler handler = new Handler(){};
oncreate(..) {

   
  setContentView(R.layout.main);
  
pc = new TextView(context);
Thread t =new Thread() {
public void run() {
handler.post(new Runnabler(){
public void run(){
pc.setText("test");
}

});

}};
t.start();

我是一瓶酱 answered 12 years, 2 months ago

Your Answer