2017-09-29 11 views
0

ブロードキャスト受信機を作成しましたが正常に動作しています。そのクラスにハンドラを渡す必要があります。コンストラクタのオーバーライドが利用できない場合、現在、私はこのように使用していますブロードキャスト受信機クラスにパラメータを渡すには?

public static class DataReceiver extends BroadcastReceiver { 

     Handler handler; 

     DataReceiver(Handler loghandler) { 
      this.handler = loghandler; 
     } 

      @Override 
     public void onReceive(Context context, Intent intent) { 
      //things goes here 
     } 
} 

は、それが機能している&。

Intent intent = new Intent(this, DataReceiver .class); 

でも、ハンドラも渡す必要があります。どのようにハンドラを送信できますか?ありがとう

+1

'しかし、ハンドラも渡す必要があります。なぜですか? –

+0

既存のデータフローを維持するには\ –

+1

次に変更します。 use localbroadcastmanager –

答えて

1

私はあなたが達成しようとしていることを本当に理解していないが、これはあなたを助けるかもしれないと思う。あなたは、放送受信のための全く新しいクラスを作成する必要はありませんが、あなたはこのようなあなたの主な活動内で使用することができます:

BroadcastReceiver receiveLocationReceiver = new BroadcastReceiver() { 

     @Override 
     public void onReceive(Context context, Intent intent) { 
      // Your custom action 
     } 

    }; 

    IntentFilter receiveLocationFilter = new IntentFilter(); 
    receiveLocationFilter.addAction("android.intent.RECEIVE_LOCATION"); 

「ONSTART」で受信機を登録します。

registerReceiver(receiveLocationReceiver, receiveLocationFilter); 

登録解除それは「onStop」に:あなたは、ブロードキャストを送信する必要がある場合

unregisterReceiver(receiveLocationReceiver); 

次に、あなたが必要とするすべてである:

Intent sendBroadcastIntent = new Intent("android.intent.RECEIVE_LOCATION"); 
sendBroadcast(sendBroadcastIntent); 
関連する問題