У меня есть MainActivity
и UserAcitivity
, я передал некоторые значения UserActivity
через намерение. из UserActivity
, я вызываю уведомление, затем появляется уведомление, я сделал нажатие на уведомление, чтобы запустить UserActivity
с помощью ожидающего намерения. При нажатии на уведомление приложение вылетает, потому что значения, переданные из MainAcitvity
, становятся нулевыми. Я не могу использовать SharedPreferences, потому что конфликт значений для другого UserAcitivity
(переданное значение было уникальным для каждого пользователя)
пример кода находится здесь: - Это MainAcitvity
public void buttonClick(View view){
Intent intent = new Intent(this,SecondActivity.class);
intent.putExtra("myname","ashiqueHira");
startActivity(intent);
}
Это это метод SecondActivity Oncreate;
String heading= "";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
Intent intent = getIntent();
heading = intent.getStringExtra("myname");
Toast.makeText(this, heading, Toast.LENGTH_SHORT).show();
}
Это мой метод уведомления
public void notificationPops(){
Intent intent = new Intent(this, SecondActivity.class);
createNotificationChannel();
TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
stackBuilder.addNextIntentWithParentStack(intent);
Vibrator vibrator = (Vibrator) getApplicationContext().getSystemService(Context.VIBRATOR_SERVICE);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, 0);
NotificationCompat.Builder builder = new NotificationCompat.Builder(this, CHANNEL_ID)
.setSmallIcon(R.drawable.ic_vibration_black_24dp)
.setContentTitle("Token Reminder")
.setContentText("Dismiss the Alarm by Clicking this")
.setPriority(NotificationCompat.PRIORITY_MAX)
.setVibrate(new long[] { 100, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000 })
.setVisibility(NotificationCompat.VISIBILITY_PUBLIC)
// Set the intent that will fire when the user taps the notification
.setContentIntent(pendingIntent)
.setAutoCancel(true);
NotificationManagerCompat notificationManager = NotificationManagerCompat.from(this);
notificationManager.notify(0, builder.build());
}
private void createNotificationChannel() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
NotificationChannel serviceChannel = new NotificationChannel(
CHANNEL_ID,
"myChannel",
NotificationManager.IMPORTANCE_HIGH
);
serviceChannel.enableVibration(true);
NotificationManager manager = getSystemService(NotificationManager.class);
manager.createNotificationChannel(serviceChannel);
}
}
Это аналогичное состояние, которое есть у меня. Разница в том, что у меня много случаев использования значения getIntent, и это значение уникально для каждого Activity. Заранее спасибо