0

我想從Broadcast Receiver調用Main Activity中的方法。這是我的MainActivity來自BroadcastReceiver的MainActivity中的調用方法 - Android

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的方法。提前致謝。

+0

@ jvpintang:你爲什麼不在你的活動中註冊廣播? – dex

回答

0

您可以使用LocalBroadcast Manager從您的ConnectionReceiver發送本地廣播。在MainActivity中,您可以註冊您的接收器以接收本地廣播。當onReceive被調用時,您可以發送本地廣播,這將在您的活動中收到。然後在您的活動中,您可以在收到本地廣播時調用該方法。此廣播僅適用於您的應用程序。所以也是安全的。你可以在這裏看到如何使用它:how to use LocalBroadcastManager?

LocalBroadcastManager是一個幫助你註冊併發送Intent到你的進程中的本地對象的廣播。與使用sendBroadcast(Intent)發送全局廣播相比,這具有許多優點。其中之一是您所播放的數據不會離開您的應用程序,因此不必擔心泄露私人數據。

相關問題