来自BroadcastReceiver的MainActivity中的调用方法 - Android

时间:2016-04-14 19:15:03

标签: android android-studio methods android-broadcastreceiver

我想从广播接收器调用主要活动中的方法。这是我的MainActivity

  public class MainActivity extends ActionBarActivity {

        protected void onCreate(Bundle savedInstanceState) {
             super.onCreate(savedInstanceState);
             setContentView(R.layout.activity_main);
        }

  public void DisplayConn(){
       if(isNetworkStatusAvailable(getApplicationContext())) {

           Toast.makeText(getApplicationContext(), "internet is available", Toast.LENGTH_LONG).show();
       } else {
           AlertDialog.Builder builder = new AlertDialog.Builder(this);
           builder.setTitle("Error");
           builder.setMessage("No Network Connection").setCancelable(false)

                   .setPositiveButton("OK", new DialogInterface.OnClickListener() {
                       public void onClick(DialogInterface dialog, int id) {
                           finish();
                       }
                   });
           AlertDialog alert = builder.create();
           alert.show();
       }
   }
}

这是我的BroadcastReceiver

 public class ConnectionReceiver extends BroadcastReceiver {

     public ConnectionReceiver() {
     }

     @Override
     public void onReceive(Context context, Intent intent) {
         MainActivity myAct = new MainActivity();
         myAct.DisplayConn();
     }
 }

因此,每次我的广播都收到它,它将调用我的MainActivity中的方法。提前致谢。

1 个答案:

答案 0 :(得分:0)

您可以使用LocalBroadcast ManagerConnectionReceiver发送本地广播。在MainActivity中,您可以注册接收器以接收本地广播。您可以在调用onReceive时发送本地广播,您的活动将收到该广播。然后在您的活动中,您可以在收到本地广播时调用该方法。此广播仅适用于您的应用。所以也是安全的。您可以在此处查看如何使用它:how to use LocalBroadcastManager?

  

LocalBroadcastManager是一个帮助程序,用于注册和发送Intent广播到进程中的本地对象。与使用sendBroadcast(Intent)发送全局广播相比,这有许多优点。其中之一就是您播放的数据不会离开您的应用,因此不必担心泄露私人数据。