2014-02-19 61 views
0

我有两个活动。 MainActivity和SecondActivity。 MainActiviy具有一个TextView(tvTXT)和三个按钮(btnSend,btnThread,btnStartActivity2) SecondActivity具有一个TextView(tvTXT)和按钮(btnSend1)更新从MainActivity开始的线程运行活动的TetxView

btnThread开始即改变tvTXT文本一个线程时布尔txtUPDATE =真

btnSend和btnSend1更改,布尔到txtUPDATE =真

当btnSend被按下其成功地做到tvTXT.setText( “值是:” + X);在MainActity。 当按btnStartActivity2启动SecondActivity并且之后按btnSend1时,MainActivity上启动的线程无法在SecondActiviy中创建tvTXT.setText(“Value is:”+ x);

** btnThread开始线程上运行()下面的代码:**

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++; 

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

+0

您的帖子不清楚。令人困惑的 – Raghunandan

+0

似乎有一个重大的误解。 –

+0

你能否请你解释一下你不了解的部分,试图进一步解释它?感谢您的回复.. – Larry

回答

0

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

+0

原因是我希望线程充当后台服务,当布尔变为真时,更改当前活动/视图的内容..如果它不可能..什么是正确的方法去做 ?谢谢 – Larry

+0

有很多方法可以实现这一点。你可以使用一个自定义的服务实现,它产生一个线程,当一个活动通过onResume时,它向该服务注册一个回调接口。确保在活动通过onPause时取消注册活动。您还可以让后台线程发送前台活动在onResume中注册接收方的广播意图(随后将其在onPause中注销)。还有很多其他的方法,这些只是两个简单的例子。 –