我从此document复制并粘贴,并尝试PutExtra
。
我点按了button1
,button2
和button3
,然后点按了来自button1
的通知,但ResultActivity
是以button3
开头的,为什么呢?
我希望显示为button1
。你知道解决方案吗?
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViewById(R.id.button).setOnClickListener(listener);
findViewById(R.id.button2).setOnClickListener(listener);
findViewById(R.id.button3).setOnClickListener(listener);
}
private View.OnClickListener listener = new View.OnClickListener() {
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.button:
notifyNotification("button1");
break;
case R.id.button2:
notifyNotification("button2");
break;
case R.id.button3:
notifyNotification("button3");
break;
}
}
};
private int mId = 0;
private void notifyNotification(String value) {
NotificationCompat.Builder mBuilder =
new NotificationCompat.Builder(this)
.setSmallIcon(android.R.drawable.stat_notify_chat)
.setContentTitle("My notification")
.setContentText(value);
// Creates an explicit intent for an Activity in your app
Intent resultIntent = new Intent(this, ResultActivity.class);
resultIntent.putExtra("value", value); // ***** I added this code *****
// The stack builder object will contain an artificial back stack for the
// started Activity.
// This ensures that navigating backward from the Activity leads out of
// your application to the Home screen.
TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
// Adds the back stack for the Intent (but not the Intent itself)
stackBuilder.addParentStack(ResultActivity.class);
// Adds the Intent that starts the Activity to the top of the stack
stackBuilder.addNextIntent(resultIntent);
PendingIntent resultPendingIntent =
stackBuilder.getPendingIntent(
0,
PendingIntent.FLAG_UPDATE_CURRENT
);
mBuilder.setContentIntent(resultPendingIntent);
NotificationManager mNotificationManager =
(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
// mId allows you to update the notification later on.
mNotificationManager.notify(mId, mBuilder.build());
mId++;
}
}
public class ResultActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_result);
Intent intent = getIntent();
String value = intent.getStringExtra("value");
((TextView)findViewById(R.id.textView)).setText(value);
}
}
答案 0 :(得分:7)
问题在于PendingIntent.FLAG_UPDATE_CURRENT
并使用相同的PendingIntent
的请求代码,即0。这样,所有通知'Intent
都将更新到最后{{1}压制。
尝试为每个Button
使用不同的请求代码。
PendingIntent
答案 1 :(得分:0)
long mId = System.currentTimemiles();