2014-01-14 93 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,数据库,...)的方式来传递你的参数,但对这种事情这是一个惯例和良好的实践遵循。