如何在广播接收机的接收方法中将数据设置为文本视图

时间:2016-12-29 09:50:25

标签: android

我想在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);
}}

我希望在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();

}}

2 个答案:

答案 0 :(得分:1)

制作MyAceiver的MainActivity内部类,在那里你可以更新你的TextView。在onStart中注册,并在onStop中取消注册。

答案 1 :(得分:0)

您需要在UI thread上运行代码,才能从viewreceiver进行任何类型的更新!使用这个

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