2013-03-17 45 views
7

這裏是我的意圖通過發送數據的代碼,但我不想打開另一個活動,我只是想發送數據,而無需打開它..如何在android中通過intent發送數據而不打開其他活動?

Bundle contain = new Bundle(); 
      contain.putString("key4", item); 
      contain.putString("price", price); 

Intent a = new Intent(Searchbydate.this, Searchbyitem.class); 
      a.putExtras(contain); 
      startActivity(a); 

這裏我不想打開這個Searchbyitem。類只是發送數據...

+0

然後爲了什麼你想發送數據?它對我沒有任何意義。 – Sajmon 2013-03-17 21:56:03

+1

@sajmon我發送這些數據以顯示在另一個活動中,但不想通過此活動打開它,現在對您有意義嗎? – scripter 2013-03-17 22:00:58

+2

現在是對不起>>你現在可以將值保存到SharedPreferences中,然後隨時檢索它們。 – Sajmon 2013-03-17 22:01:58

回答

3

你打電話也使用SharedPreferences來archieve是

1

您可以嘗試EventBusOtto的Android庫活動,服務和片段之間進行溝通..

所以,你應該創建服務傳遞數據和活動之間的通信,碎片等使用事件總線

3

Y我也面臨這個問題。

許多開發人員在通過Intent或Bundle將對話數據傳遞給另一個活動時也面臨問題。它在檢索時從另一個活動返回null。

唯一的解決方案是SharedPreferences。

但你必須把它駁回按鈕內部(例如:確定/取消等)

,輕鬆地通過相同的密鑰從另一活動的數據。請勿使用任何服務,然後使用廣播意圖。

在對話活動的代碼是這樣的:

AlertDialog.Builder builder = new AlertDialog.Builder(this); 
    builder.setIcon(R.drawable.mailicon); 
    builder.setTitle(name); 
    builder.setView(view); 

    builder.setPositiveButton("Send Request",new DialogInterface.OnClickListener() 
    { 

    @Override 
    public void onClick(DialogInterface dialog, int which) { 
    String mailID = id.getText().toString(); 

    //Here define all your sharedpreferences code with key and value 
    SharedPreferences prefs = getSharedPreferences("my_prefs", MODE_PRIVATE); 
    SharedPreferences.Editor edit = prefs.edit(); 
    edit.putString("MID", mailID); 
    edit.commit(); 

    } 

}); 

而且從另一個獲取數據是這樣的:

SharedPreferences bb = getSharedPreferences("my_prefs", 0); 
    String m = bb.getString("NUM", ""); 
    Toast.makeText(this, m, Toast.LENGTH_SHORT).show(); 

添加一些checkings一個很好的標準。

謝謝

相關問題