私は2つのアクティビティにブロードキャストともう1つの受信を送信しています。しかし、受信機と呼ばれることはありません飽きない -BroadcastReceiverはアクティビティに登録されていません。
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();
}
}
}
マニフェスト
<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>
を使用することが良いです。 1つのアクティビティから別のアクティビティにブロードキャストを送信することはできません.2番目のアクティビティは再開されません。 2つ目のアクティビティで何かが必要な場合は、なぜそれが開始されたのかを示す開始インテントにバンドルを入れて起動します。 – Francesc
2つの明白な間違いがここにあります! 1)あなたの内部クラスは静的宣言されるべきです。静的な名前の前に置くだけです。 2)内部クラスで指定する場合は、内部クラスへの参照でもコンテナクラスの名前を指定する必要があります。あなたの場合は、内部クラスの名前として.ToastDisplayを指定しました。パッケージ名が前に追加されます。しかし、コンテナクラスの名前はありません。名前を ".MainActivity.ToastDisplay"にするか、完全なパッケージ名+コンテナクラス+内部クラスを名前として入れてみてください。 – user3646774
@ user3646774ありがとう、私は問題を解決しました。アップしてください。 – Anirban