如何访问在BroadcastReceivers中的MainActivity(布局)中声明的Switch按钮

我有一项任务,当飞机模式为ON / OFF时,我必须改变开关按钮的状态。

我有一个主要活动,我宣布Switch Button,我想从BroadcastReceiver Class更改Switch的状态开/关

接收器

public class MyReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { boolean isAirplaneModeOn = intent.getBooleanExtra("state", false); if(isAirplaneModeOn){ What Should i do ? } } } 

layout_main_activity

     

尝试使用像这样的事件总线将事件发布到活动。 从活动中,当您收到事件时,您可以更改开关的状态。 这样的事情: – 你的广播课:

 public class MyReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { boolean isAirplaneModeOn = intent.getBooleanExtra("state", false); if(isAirplaneModeOn){ EventBus.getDefault().post(new SwitchEvent()); } } } 

活动class:

 public class YourActivity{ //declare your switch @Override public void onCreate() { setContentView(R.layout.layout_main_activity); //initialize your switch } @Override public void onStart() { super.onStart(); EventBus.getDefault().register(this); } @Override public void onStop() { super.onStop(); EventBus.getDefault().unregister(this); } @Subscribe(threadMode = ThreadMode.MAIN) public void onMessageEvent(SwitchEvent event) { //update your switch element } } 

活动的课程:

 Public class SwitchEvent{ public SwitchEvent(){ //empty } }