0

メインアクティビティのメソッドをブロードキャストレシーバから呼び出したい。これは私のMainActivityMainActivityのBroadcastReceiverからの呼び出しメソッド - 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

ConnectionReceiverからローカルブロードキャストを送信するのにLocalBroadcast Managerを使用できます。 MainActivityでは、受信者を登録してローカルブロードキャストを受信することができます。 onReceiveが呼び出されたときにローカルブロードキャストを送信できます。これはあなたのアクティビティで受信されます。あなたの活動では、このローカルブロードキャストを受け取ったときにメソッドを呼び出すことができます。このブロードキャストはあなたのアプリのローカルのみです。安全でもあります。あなたはそれを使用する方法をここに見ることができます:how to use LocalBroadcastManager?

LocalBroadcastManagerは、インテントのブロードキャストをプロセス内のローカルオブジェクトに登録して送信するヘルパーです。これには、sendBroadcast(Intent)を使用してグローバルブロードキャストを送信することよりも多くの利点があります。そのうちの1つは、ブロードキャストしているデータがアプリを離れることがないため、プライベートデータの漏洩を心配する必要はありません。

関連する問題