Ich habe 2 Aktivität Eins sendet ein Broadcust und ein anderes Empfangen. Aber Empfänger nie bekommen genannt -BroadcastReceiver registriert in einer Aktivität nie erhalten
MainActivity
public class MainActivity extends AppCompatActivity {
public static String BROADCAST_ACTION = "com.aj.SHOWTOAST";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void sendBroadcast(View v) {
Intent broadcast = new Intent();
broadcast.setAction(BROADCAST_ACTION);
this.sendBroadcast(broadcast);
}
}
ToastDisplay
public class ToastDisplay extends AppCompatActivity {
public static String BROADCAST_ACTION = "com.aj.SHOWTOAST";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_toast_display);
IntentFilter filter = new IntentFilter(BROADCAST_ACTION);
this.registerReceiver(new Receiver(), filter);
}
private class Receiver extends BroadcastReceiver {
@Override
public void onReceive(Context arg0, Intent arg1) {
Log.d("TAG", "onReceive: SMS SENT!!");
Toast.makeText(getApplicationContext(), "SMS SENT!!", Toast.LENGTH_SHORT).show();
}
}
}
Manifest
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".ToastDisplay">
<intent-filter>
<action android:name="com.aj.SHOWTOAST" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
Es zu verwenden. Sie können keine Sendung von einer Aktivität an eine andere senden, die zweite Aktivität wird nicht fortgesetzt. Wenn Sie in der zweiten Aktivität etwas tun müssen, starten Sie es mit einem Bündel in der Startabsicht, das sagt, warum es gestartet wurde. – Francesc
Zwei offensichtliche Fehler hier! 1) Ihre innere Klasse sollte als statisch deklariert werden. Setzen Sie einfach vor den Namen statisch. 2) Wenn Sie in der inneren Klasse angeben, müssen Sie den Namen der Container-Klasse auch in der Referenz auf die innere Klasse angeben. In Ihrem Fall haben Sie .ToastDisplay als den Namen der inneren Klasse angegeben, der der Paketname vorangestellt wird. Aber es gibt keinen Namen für die Containerklasse. Versuchen Sie, das als Namen ".MainActivity.ToastDisplay" zu setzen oder versuchen Sie, den vollständigen Paketnamen + Container-Klassen + innere Klasse als Namen zu setzen. – user3646774
@ user3646774 Danke Mann, ich habe das Problem gelöst. Bitte upvote. – Anirban