我的应用中有 5 个活动。每个活动都有一些数据。我需要上一个活动中的所有以前的活动数据。之前所有的Activity都是一种Form。用户填写数据并移动到下一个活动,最后一个活动显示所有以前活动的数据。
3 回答
选项1:
如果您想为每个活动添加数据并将其结转到下一个活动,那么最好使用bundle
.
在数据相对较小并且您只想将数据传递给下一个活动并且不想存储数据以备将来使用的情况下,捆绑包更好。
选项 2:
您可以使用Sharedprefrences
. 更好地用于存储数据以备将来使用。
选项 3:
如果您有更多记录并且您希望它以结构化的方式存储并存储以供将来使用,那么Sqlite
数据库是显而易见的。
如果您想非常频繁地使用您的数据并且它不是结构化的,那么上面的选项是万一的。
有几种方法可以做到这一点。
使用 Intent 并保存数据,例如
putString(...)
:
这不是很好,因为您必须临时保存 Activity 中每个 Intent 的数据,并使用下一个 Intent 进一步移动它们。为您的数据使用一个类并将其传递给每个意图的活动:通过
这种方式,您可以将类的实例传递给活动以写入/读取您的数据。但是这个类需要 Parcelable / Serializable 接口静态类的使用:
您可以在每个 Activity 中访问该类并按照您的意愿进行写入/读取。使用带有 Intent 的 Bundle:
将所有数据保存在 Bundle 中并将其传递给活动。想想你的设计和使用片段:
有一个包含 5 个片段的活动。每个 Fragment 都保存/读取 Activity 中的数据。
最好的方法是使用 Bundle。
您可以使用Intent
第一活动
Intent intent = new Intent(FirstActivity.this,SecondActivity.class);
intent.putExtra("key_value", string);
startActivity(intent);
第二活动
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);