从MainActivity中启动的Thread更新正在运行的活动的TextView

时间:2014-02-19 13:40:16

标签: java android multithreading

我有两项活动。 MainActivity和SecondActivity。 MainActiviy有一个TextView(tvTXT)和三个按钮(btnSend,btnThread,btnStartActivity2) SecondActivity有一个TextView(tvTXT)和一个Button(btnSend1)

当布尔txtUPDATE = true时,btnThread启动一个正在改变tvTXT文本的线程

btnSend和btnSend1将该布尔值更改为txtUPDATE = true

当按下btnSend时,它成功执行tvTXT.setText(“Value is:”+ x);在MainActity中。 当按btnStartActivity2以启动SecondActivity并且之后按下btnSend1时,线程在MainActivity上启动,但不能在TVTXT.setText(“值为:”+ x);在SecondActiviy中。

** btnThread在run()上使用以下代码启动线程:**

public void run() {

    while (txtUPDATE){
      MainActivity.thisActivity.runOnUiThread(new Runnable() {
          @Override
          public void run() {
              MainActivity.tvTXT.setText("Value is: "+ x);
               MainActivity.txtUPDATE = false;
          }
      });
    }

** btnSend和btnSend1代码**

      txtUPDATE = true;
      x++;

如何在MainActivity中启动的线程中设置SecondActivity中的TextView(tvTXT)文本?

1 个答案:

答案 0 :(得分:0)

为什么你会尝试在MainActivity中使用SecondActivity中的某些内容?解释令人困惑。您的runnable只在MainActivity中更改tvTXT,SecondActivity中使用的TextView是一个完全不同的对象和View实例,因此Runnable无法在SecondActivity中更改UI组件。