2014-02-19 93 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中註銷)。還有很多其他的方法,這些只是兩個簡單的例子。 –