2013-02-23 49 views
0

可能這是一個幼稚的問題,但我很開心請不要認爲是錯誤的問題。,我正在尋找很多,以下
http://developer.android.com/guide/topics/ui/notifiers/notifications.html教程。也谷歌解決我的問題,但我找不到。在單獨的視圖中顯示所有待處理的通知

這是我的任務。

我在主要活動中有一個EditText和一個按鈕,當我點擊按鈕時生成通知,當我打開通知另一個活動打開時,顯示Editext數據,我通過EditText輸入了主要活動。

我的問題是....

  1. 我想顯示在一個通知窗口掛起通知的數量爲http://developer.android.com/guide/topics/ui/notifiers/notifications.html#Updating 但我便無法理解這一點 - >開始的循環處理數據,然後通知用戶...... 我該如何實現這一點。我如何處理數據以獲得待處理計數。請記住,當沒有通知時,這個計數會減少?

  2. 當單擊通知時,我想要在單獨的活動中獲取所有通知,就像收件箱中的郵件一樣。

  3. 例如在我的主要活動中,我點擊了10次按鈕,所以實際上10個通知將在count = 10的單個通知窗口中生成,但它顯示count = 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"); 
    } 
} 

問題在哪裏好心地將我重定向到正確的路徑,也好心地指導我如何實現這一點。

回答

0

你沒有得到實際通知計數的原因是,每當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個不同的通知。

+0

Waqas我把declred作爲一個類的數據成員,比它的工作正常,但後來當我再次點擊按鈕比其設置爲1再次? 關於第二個答案我不想要10個單獨的通知,只需要1個通知與計數= 10,並且當我打開通知時,所有10個通知應該在一個sepate活動中可用? 就像GOSMS Pro或任何其他短信應用程序,它顯示通知欄中的總郵件數,如何做到這一點 – 2013-02-23 14:37:38

+0

你是什麼意思,工作正常,但後來它沒有?如果PendingIntent包含相同的數據,操作,標誌等,則不能這樣做。它只是被替換。 – Waqas 2013-02-23 14:41:04

+0

所以告訴我如何實現這一點,只需10個通知很容易,但如何處理數據以檢索所有PendingIntents?有沒有辦法做? – 2013-02-23 14:48:26

相關問題