2017-04-06 2 views
-1

So lernte ich über BroadcastReceiver in Android. BroadcastReceiver basieren auf Designmustern von Beobachtern (was sie sehr interessant macht).
Also was ich versuche zu erreichen ist, meine Nachricht zu senden und innerhalb derselben Aktivität möchte ich die Nachricht erhalten (nur zu Testzwecken). Hier ist das CodefragmentNicht in der Lage, Broadcast in derselben Aktivität zu empfangen

Log.d("ABC", "sending"); 
    Intent intent = new Intent("com.yourcompany.testIntent"); 
    intent.putExtra("value", "test"); 
    sendBroadcast(intent); 



    Log.d("ABC", "sent"); 

    IntentFilter filter = new IntentFilter("com.yourcompany.testIntent"); 
    BroadcastReceiver receiver = new BroadcastReceiver() { 
     @Override 
     public void onReceive(Context context, Intent intent) { 
      Log.d("ABC","INSIDE "); 
      String value = intent.getExtras().getString("value"); 
     } 
    }; 

    Log.d("ABC", "receiving"); 
    registerReceiver(receiver, filter); 
    Log.d("ABC", "received"); 

Hier ist der Ausgang debuggt

04-06 20: 40: 52,446 20.149-20.149/com.example.illuminati.broadcastreceiver D/ABC: Senden 04-06 20: 40: 52.447 20149-20149/com.beispiel.illuminati.broadcastcreceiver D/ABC: gesendet 04-06 20: 40: 52.448 20149-20149/com.beispiel.illuminati.broadcastcreceiver D/ABC: Empfangen 04-06 20: 40: 52.453 20149-20149/com.beispiel.illuminati.broadcast Empfänger D/ABC: empfangene

Warum ist es nicht innerhalb OnReceive bekommen() -Methode
Was mir fehlt hier
Jede Hilfe?

Antwort

3

Sie senden Ihre Broadcast-Nachricht, bevor Sie den Broadcast-Empfänger registrieren. Versuchen Sie in der folgenden Art und Weise tun, und es wird funktionieren:

IntentFilter filter = new IntentFilter("com.yourcompany.testIntent"); 
    BroadcastReceiver receiver = new BroadcastReceiver() { 
     @Override 
     public void onReceive(Context context, Intent intent) { 
      Log.d("ABC", "INSIDE "); 
      String value = intent.getExtras().getString("value"); 
     } 
    }; 
    registerReceiver(receiver, filter); 
    Intent intent = new Intent("com.yourcompany.testIntent"); 
    intent.putExtra("value", "test"); 
    sendBroadcast(intent); 
+0

Solch ein dummer Fehler. Ich kann dir nicht genug danken. Vielen Dank :) –

+0

Gern geschehen, weiterlernen! – AlexTa

Verwandte Themen