这可能是一个幼稚的问题,但我是beginer请不要认为这是一个错误的问题,我搜索了很多,我也在关注这个
http://developer.android.com/guide/topics/ui/notifiers/notifications.html辅导的还有谷歌来解决我的问题,但我找不到。
这是我的任务。
我在主活动中有一个EditText和一个按钮,当我单击按钮时,会生成一个通知,当我打开该通知时,另一个活动打开,显示我通过EditText在主活动输入的Editext数据。
我的问题是…
-
我想在单个通知窗口中显示挂起通知的计数,如中所示http://developer.android.com/guide/topics/ui/notifiers/notifications.html#Updating但我无法理解-->开始一个处理数据然后通知用户的循环我怎样才能做到这一点。如何处理数据以获得挂起计数。请记住,当没有通知时,此计数将递减???
-
当点击一个通知时,我想在一个单独的活动中获得所有通知,就像收件箱中的消息一样。
-
例如,在我的主要活动中,我点击了10次按钮,所以实际上在一个通知窗口中会生成10个通知,计数=10,但它显示计数=1??当我打开通知时,它只会在另一个活动中显示最新的通知内容,我如何在单个活动中显示剩余的9个??
下面是我的主要活动。。。。
Button btn;
EditText edtText;
NotificationCompat.Builder builder;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn = (Button) findViewById(R.id.button);
edtText = (EditText) findViewById(R.id.editText);
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
CreteNotification(Calendar.getInstance().getTimeInMillis(), edtText.getText().toString());
}
});
}
protected void CreteNotification(long when, String data) {
String notificationContent ="Notification Content Click Here to go more details";
String notificationTitle ="This is Notification";
int number = 1;
Bitmap largeIcon = BitmapFactory.decodeResource(getResources(),R.drawable.ic_launcher);
int smalIcon =R.drawable.ic_launcher;
String notificationData = data;
Intent intent = new Intent(getApplicationContext(), MyNotificationClass.class);
intent.putExtra("Message", notificationData);
intent.putExtra("Time", Integer.toString((int) when) );
intent.setData(Uri.parse("content://"+when));
PendingIntent pendingIntent = PendingIntent.getActivity(getApplicationContext(), 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
NotificationManager notificationManager =(NotificationManager) getApplicationContext().getSystemService(NOTIFICATION_SERVICE);
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(getApplicationContext())
.setWhen(when)
.setContentText(notificationContent)
.setContentTitle(notificationTitle)
.setSmallIcon(smalIcon)
.setAutoCancel(true)
.setTicker(notificationTitle)
.setLargeIcon(largeIcon)
.setDefaults(Notification.DEFAULT_LIGHTS| Notification.DEFAULT_VIBRATE| Notification.DEFAULT_SOUND)
.setContentIntent(pendingIntent);
// Start of a loop that processes data and then notifies the user
// how to loop??????????????????
notificationBuilder.setNumber(++number);
Notification notification = notificationBuilder.getNotification();
notificationManager.notify(1, notification);
}
我想显示所有通知的代码?????
HashMap<String, String> inboxMsg;
TextView notiTextView;
Button btn;
int Id;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my_notification_class);
inboxMsg = new HashMap<String, String>();
Id = 0;
notiTextView = (TextView) findViewById(R.id.textView1);
btn = (Button) findViewById(R.id.button1);
btn.setOnClickListener(new OnClickListener() {
@SuppressWarnings("rawtypes")
@Override
public void onClick(View v) {
Set<String> keys = inboxMsg.keySet();
Iterator keyItra = keys.iterator();
while (keyItra.hasNext()) {
String k = (String) keyItra.next();
String Message = inboxMsg.get(k);
notiTextView.setText(Message);
}
}
});
if(savedInstanceState == null)
{
String Mesage = getIntent().getExtras().getString("Message");
String Time = getIntent().getExtras().getString("Time");
inboxMsg.put(Integer.toString(++Id), "Message is " + Mesage + " Time " + Time + "n");
}
}
问题在哪里?请引导我走正确的道路,也请指导我如何实现这一点。
没有得到实际通知计数的原因是,每当调用CreteNotification(long when, String data)
方法时,数字变量都设置为1。它可以通过将数字作为类成员变量来解决,而不是在方法内部声明它。
Button btn;
EditText edtText;
NotificationCompat.Builder builder;
int number = 1;
.....
protected void CreteNotification(long when, String data) {
.....
notificationBuilder.setNumber(++number);
....
}
关于为每个通知启动不同的活动,在调用notificationManager.notify(ID, notification);
方法时,您需要为每个通知传递不同的"ID",但请记住,如果您分配了不同的ID,则触发新通知不会更新计数,而是添加新通知。因此,点击生成通知的按钮实际上会生成10个不同的通知。