getString из Bundle теряет старое значение
Из FirstActivity я создаю три отдельных уведомления и, щелкая по ним, запускаю SecondActivity, которая находится в том же приложении. Проблема в том, что значение строки в SecondActivity всегда является последним уведомлением, которое я опубликовал. Мне нужно запустить SecondActivity, и вызов на дисплей происходит из Уведомления 1, когда я нажимаю на Уведомление с id =1 и аналогично для id = 2 и id =3. Но я теряю эти дополнения в своем намерении. Пожалуйста, помогите мне с этим, если вы сталкивались с такой ситуацией раньше. Я пробовал флаг PendingIntent FLAG_CANCEL_CURRENT, но тщетно. Заранее спасибо.:-)
NotificationManager nm;
Notification n;
PendingIntent pi1, pi2, pi3;
Button btnNotify1, btnNotify2, btnNotify3;
Intent intent;
final static String TICKER_TEXT = "My_Notification";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_notification);
btnNotify1 = (Button) findViewById(R.id.btnNotify1);
btnNotify2 = (Button) findViewById(R.id.btnNotify2);
btnNotify3 = (Button) findViewById(R.id.btnNotify3);
nm = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
n = new Notification(R.drawable.ic_launcher, TICKER_TEXT,
System.currentTimeMillis());
n.flags = n.flags | Notification.FLAG_AUTO_CANCEL;
intent = new Intent(this, SecondActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
btnNotify1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
intent.putExtra("call_is_from", "Notification 1");
pi1 = PendingIntent.getActivity(getApplicationContext(), 0,
intent, PendingIntent.FLAG_UPDATE_CURRENT);
n.setLatestEventInfo(getApplicationContext(), "Notification 1",
"One", pi1);
nm.notify(1, n);
}
});
btnNotify2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
intent.putExtra("call_is_from", "Notification 2");
pi2 = PendingIntent.getActivity(getApplicationContext(), 0,
intent, PendingIntent.FLAG_UPDATE_CURRENT);
n.setLatestEventInfo(getApplicationContext(), "Notification 2",
"Two", pi2);
nm.notify(2, n);
}
});
btnNotify3.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
intent.putExtra("call_is_from", "Notification 3");
pi3 = PendingIntent.getActivity(getApplicationContext(), 0,
intent, PendingIntent.FLAG_UPDATE_CURRENT);
n.setLatestEventInfo(getApplicationContext(), "Notification 3",
"Three", pi3);
nm.notify(3, n);
}
});
}
1 ответ
Вы должны убедиться, что каждый из ваших PendingIntent
с уникален. Так как вы получаете PendingIntent
используя тот же Intent
и то же самое requestCode
, вы всегда получите то же самое PendingIntent
(хотя дополнения разные).
Чтобы убедиться, что каждый из ваших PendingIntent
s уникален, используйте другой requestCode
для каждого, как это:
pi1 = PendingIntent.getActivity(getApplicationContext(), 1,
intent, PendingIntent.FLAG_UPDATE_CURRENT);
pi2 = PendingIntent.getActivity(getApplicationContext(), 2,
intent, PendingIntent.FLAG_UPDATE_CURRENT);
pi3 = PendingIntent.getActivity(getApplicationContext(), 3,
intent, PendingIntent.FLAG_UPDATE_CURRENT);