2016-09-07 45 views
0

私は多くのアクティビティを持っていますが、私はチェック接続のためにマニフェストに登録したbroadCastReceiverを持っています。 私はインターネット接続 を失ったとき、私はマニフェストで私のレシーバを登録し、現在活動中のショーSnackbarをしたいと思います:現在のアクティビティにSnackBarを表示

<receiver android:name="com.itmind.spac.spacapp.services.ConnectivityChangeReceiver"> 
     <intent-filter> 
      <action android:name="android.net.conn.CONNECTIVITY_CHANGE"/> 
     </intent-filter> 
    </receiver> 

とブロードキャストクラス:

public class ConnectivityChangeReceiver extends BroadcastReceiver { 
    @Override 
    public void onReceive(final Context context, final Intent intent) { 
     ConnectivityManager cm =(ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); 
     if (cm.getActiveNetworkInfo()!=null){ 
     Toast.makeText(context, "Connected to Internet", Toast.LENGTH_LONG).show(); 
     } 
     else{ 
     /** I WOULD CREATE A SNACKBAR FOR ALL ACTIVITIES, OR FOR MY CURRENT ACTIVITY */ 
     Toast.makeText(context, "No Connected to Internet", Toast.LENGTH_LONG).show(); 

     } 

    } 
} 
+0

見てください:http://stackoverflow.com/questions/2513832/how-to-send-data-from-broadcastreceiver-to-an-activity-in-android –

答えて

1

あなたが放送に対応しようとしている場合アクティビティの1つがアクティブな場合にのみ、アクティビティにブロードキャストレシーバを登録および登録解除してください。登録/登録解除コールは、アクティビティのライフサイクルイベント(onCreate()/onDestroy()またはonStart()/onStop())に一致する必要があります。

複数のアクティビティを備えたアプリケーションのためにそれを行うための簡単な方法、たとえば、このアウトラインを受信機を管理し、基本クラスを拡張し、それぞれの活動をさせることである:

public class MyActivity extends AppCompatActivity { 
    void onCreate(...) { 
    // register the receiver here... 
    } 

    void onDestroy() { 
    // unregister the receiver here... 
    } 
} 

また、あなたの接続のレシーバーANにする必要がありますこのアクティビティの内部クラスを作成し、マニフェストファイルからレシーバ宣言を削除します。なぜなら、これを動的に登録するからです。

+0

うん!ありがとうございました!私はonCreateとOnDestroyにブロードキャストを登録してgeneralActivityを拡張し、BroadCastでインターフェースを作成しました。 ありがとうございます! – LorenzoBerti

関連する問題