2012-06-07 70 views
0

我試圖從另一個活動中的textview獲取內容以顯示在通知欄消息中。它有效,但不正確。 textview中的字符串確實顯示在通知中,我通過捆綁來自其他活動的textview的信息來完成此操作,然後讓通知管理器獲取該捆綁。當其他活動啓動時會出現問題,它會觸發通知,因爲活動中的最後一部分代碼會執行捆綁和發送操作,從而導致通知被觸發,而忽略設置的啓動時間。所以我的問題是通知從另一個活動獲取字符串的最好和最簡單的方法是什麼?這是活動,這是問題。它觸發通知它自己:Android狀態欄通知中的自定義內容

import java.io.IOException; 

import android.app.Activity; 
import android.app.NotificationManager; 
import android.content.Intent; 
import android.database.SQLException; 
import android.os.Bundle; 
import android.widget.TextView; 

public class DBTest2 extends Activity { 

String scrNote; 
TextView showBV; 
NotificationManager nm; 
DBAdapter dba; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.dbtest_2); 
    showBV = (TextView) findViewById(R.id.getBK_TV); 

    nm = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); 
    //---cancel the notification--- 
    try{ 
    nm.cancel(getIntent().getExtras().getInt("uID")); 
    } catch (Exception e) { 
     System.out.println("Error when cancelling: "+e.toString()); 
    } 
    //---END cancel the notification--- 



    //---- SHOW IN NOTIFICATION------ 

    scrNote = showBV.getText().toString(); 
    Bundle moveScrNote = new Bundle(); 
    moveScrNote.putString("mSN", scrNote); 
    Intent toNoteBody = new Intent(DBTest2.this, DisplayNotifications.class); 
    toNoteBody.putExtras(moveScrNote); 
    startActivity(toNoteBody); 


    //---- END SHOW IN NOTIFICATION------ 


} 


} 

,這裏是通知經理:

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    //---get the notification ID for the notification; 
    // passed in by the MainActivity--- 
    int uID = getIntent().getExtras().getInt("uniqueID"); 

    //---PendingIntent to launch activity 
    Intent noteI = new Intent("com.vee.search01.DBTEST2"); 
    noteI.putExtra("uniqueID", uID); 

    PendingIntent herroIntent = 
     PendingIntent.getActivity(this, 0, noteI, 0); 

    nm = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); 
    long fireTime = System.currentTimeMillis(); 
    String noteTitle = "Notification Title"; 

    Bundle getNoteBody = getIntent().getExtras(); 
    String gotNoteBody = getNoteBody.getString("mSN"); 
    String noteBody = gotNoteBody; 

    Notification note = new Notification(R.drawable.noteicon, noteTitle, fireTime); 
    note.setLatestEventInfo(this, noteTitle, noteBody, herroIntent); 
    note.defaults |= Notification.DEFAULT_SOUND; 
    note.defaults |= Notification.FLAG_SHOW_LIGHTS; 
    nm.notify(uID, note); 
    finish(); 
} 

} 

回答

1

到活動之間傳輸內容的最佳方式是通過額外發送它在意圖。

如果你從發行活動A的通知,並要處理它的活動B, 然後創建A中的通知,並插入含有的PendingIntent的意圖開始 B.當通知顯示和用戶點擊它,B應該被解僱。

如果要將通知文本從B發送到A,請使用單獨的Intent。

如果您嘗試將通知Intent的文本發送給B,並顯示 通知,請將該文本置於Intent的附加內容中。

此外,如果您使用的是最新版本的平臺,請閱讀通知的參考文檔。它已被棄用,傾向於通過Notification.Builder創建通知。一個好處是您可以將通知設置爲自動取消,因此您不必在代碼中取消通知。