2016-12-29 33 views
0

我想在broacast接收器類中使用文本視圖設置文本方法,但它不是從主活動初始化文本視圖對象。如何在廣播接收器的接收方法中將數據設置爲文本視圖

主要活動

public class MainActivity extends AppCompatActivity { 
TextView t1; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    t1=(TextView)findViewById(R.id.textView); 
}} 

廣播接收機,其中i要設置其通過廣播接收到的意圖在TextView的數據。麪包是工作的罰款

public class MyReceiver extends BroadcastReceiver { 
public MyReceiver() { 
} 

@Override 
public void onReceive(Context context, Intent intent) { 
    // TODO: This method is called when the BroadcastReceiver is receiving 
    // an Intent broadcast. 
    String action=intent.getAction(); 
    String data=intent.getExtras().getString("msg"); 
    Toast.makeText(context,"Detected: "+action +": "+data,Toast.LENGTH_SHORT).show(); 

}} 

回答

1

製作MyReceiver內部類MainActivity的,在那裏你可以更新您的TextView。在onStart中註冊它,並在onStop中取消註冊。

+0

你們這傢伙投下這個答案? –

+1

我認爲這是關於不提runOnUiThread - 這是不需要的,因爲onReceive將運行在UI線程 –

+0

這不是問題的關於..你的答案是好的只有人 –

0

您需要運行UI thread上的代碼,以便從receiverview進行任何類型的更新!使用這個

runOnUiThread(new Runnable() { 
       @Override 
       public void run() { 
        textView.setText("Your Text"); 
       } 
      }); 
+0

不需要,因爲onReceive將在UI線程上運行 –

+0

我應該在哪裏放置此代碼?在接受方法? – firozsaifi24

+0

是的,你應該把它放在那裏或任何與UI無關的位置,但你想更新UI元素。 –