2014-01-14 31 views
0

我有一個問題,有兩個不同的活動之間共享數據。我有這樣的數據:
SharedPreferences - 安卓(不同的數據類型)

int number 
String name 
int number_2 
int time 
int total 

我試圖製造類似訂單列表與這組數據。因此,它需要一組數據,然後返回到之前的活動,向前移動並再次向其添加數據。

我已經使它成爲對象的數組的一個想法 - 但裏面的數據發生了變化活動後清除。

我怎麼能做到嗎?

我不知道是否和如何對象的數組添加到SharedPreferences,並從那裏獲得一個元素的值。

+0

這是一個很好的例子:http://hmkcode.com/android-passing-java-object-another-activity/ – kedark

+0

這聽起來不像一個數據庫,它可能有一個可以查詢的單個表返回x個對象? –

+0

好吧,這也是我的問題什麼是最好的解決方案? – matgod

回答

0

爲什麼不使用意圖

Intent intent = new Intent(FirstActivity.this, (destination activity)SecondActivity.class); 
intent.putExtra("some_key", value); 
intent.putExtra("some_other_key", "a value"); 
startActivity(intent); 

在第二活動

Bundle bundle = getIntent().getExtras(); 
int value = bundle.getInt("some_key"); 
String value2 = bundle.getString("some_other_key"); 

編輯,如果你想了解更多有關添加陣列共享偏好檢查這個

Is it possible to add an array or object to SharedPreferences on Android

個也是這個

http://www.sherif.mobi/2012/05/string-arrays-and-object-arrays-in.html

+0

OP與一個以上活動 – horvste

+0

這種共享數據不回答這個問題,它回答你覺得OP應該問的問題。 –

+0

sry但是,什麼OP意味着?? – Android

0

不要使用共享喜好目的使用Singleton模式,延長應用程序,或者只是讓靜態的變量類和更新他們...

你可以使用.putExtra,但由於您正在與多個活動進行通信,因此上述建議可能是最好的。

public class ShareData { 
private String s; 
private int s; 
private static ShareData shareData = new ShareData(); 
private ShareData(){} 

public static ShareData getInstance(){ return shareData} 
//create getters and setters; 
} 
+0

爲什麼downvote,答案與這個問題無關? OP想要在兩個活動之間傳遞數據,而不是在應用程序關閉後保存數據。 – horvste

+0

因爲這是應該避免的事情之一。它可以工作,但它不是Android平臺在活動之間交換價值的傳統方式。 –

+0

@SimoneCasagranda傳統方式是什麼? – horvste

1

,如果你想這樣做,在運行相關聯的關鍵字到你想傳遞給你的第二個活動值(S),你應該看看Intent(s)的文檔。

反正你能想到的任何(sharedpref,數據庫,...)的方式來傳遞你的參數,但對這種事情這是一個慣例和良好的實踐遵循。