在单个Activity中获取多个Activity的数据的正确方法是什么?

时间:2013-08-30 14:28:45

标签: android android-intent

我的应用程序中有5个活动。每个Activity都有一些数据。我需要上一个Activity中的所有以前的Activity数据。以前的所有Activity都是一种Form。用户填充数据并移至下一个活动,最后一个活动显示所有先前活动的数据。

3 个答案:

答案 0 :(得分:1)

选项1:

如果您想为每个活动添加数据并将其转移到下一个活动,那么最好使用bundle传递数据。

在数据相对较小且您只想将数据传递到下一个活动并且不希望将来存储数据的情况下,捆绑包更好。

选项2:

您可以使用Sharedprefrences。最好在将来存储数据时使用。

选项3:

如果您有更多记录,并且希望它以结构化方式存储,并且将来存储,那么Sqlite数据库是显而易见的。

如果你想要非常频繁地使用你的数据并且它没有结构化,那么上面的选项就是以防万一。

答案 1 :(得分:1)

有几种方法可以做到这一点。

  • 使用意图并保存putString(...)之类的数据:
    这不是很好,因为你必须暂时保存Activity中每个Intent的数据,并使用下一个Intent进一步移动它们。

  • 为您的数据使用一个类,并将其传递给每个意图的活动:
    这样,您可以将类的实例传递给活动以写入/读取数据。但是这个类需要Parcelable / Serializable接口

  • 使用静态类:
    您可以在每个Activity中访问此类,并按照您的意愿进行写/读。

  • 使用带有意图的捆绑包:
    将所有数据保存在Bundle中并将其传递给Activities。

  • 考虑一下你的设计并使用碎片:
    有一个活动有5个碎片。每个片段都会保存/读取活动中的数据。

最好的方法是使用Bundle。

答案 2 :(得分:0)

您可以使用Intent

FirstActivity

Intent intent = new Intent(FirstActivity.this,SecondActivity.class);
intent.putExtra("key_value", string); 
startActivity(intent);

SecondActivity

String text = getIntent().getStringExtra("key_value");

或者,如果您需要将数据保留更长时间,并且可以在应用程序被终止后重复使用,则可以使用SharedPrefrences

将数据放在某些Activity

 SharedPreferences.Editor editor = getPreferences(MODE_PRIVATE).edit();
 editor.putString("ValueOne", "SomeValue" );
 editor.commit();

从任意Activity

中的共享偏好设施中检索数据
SharedPreferences prefs = getPreferences(MODE_PRIVATE); 
String prefString = prefs.getString("ValueOne", null);