我有两个活动在我的应用程序中说A & B.活动A需要B存储的数据(当前共享首选项)。但要查询活动A中的数据,我需要B的上下文。但是,活动A没有任何方法来获取活动B的上下文(根据应用程序流程)。有没有办法或使用数据库将是一个更好的选择?SharedPreferences或数据库?
0
A
回答
5
如果您要存储在SharedPreferences中,那么您不需要Activity B的上下文。活动A的上下文可以访问应用程序的SharedPreferences,因为它们对应用程序是“全局”的。
代码示例
ActivityA.this.getSharedPreferences("SOMETHING", MODE_PRIVATE);
至于如果你需要一个数据库定义,你没有说什么数据要存储。因此不可能说出来。
4
为什么你需要活动A的上下文?您可以在每个活动中使用getApplicationContext().getSharedPreferences()
来存储/检索SharedPreferences。
此外,根据要存储的数据,您可能需要考虑使用Intent将数据从活动A传递到活动B.例如,要从A启动活动B,您可以使用类似下面的内容:
Intent i = new Intent(getApplicationContext(), ActivityB.class);
i.putExtra("someIntData",1234);
i.putExtra("someStringData","yourdata");
startActivity(i);
然后无论你需要ActivityB的数据,你可以这样做:
int yourIntData = getIntent().getIntExtra("someIntData",0);
String yourStringData = getIntent().getStringExtra("someStringData");
这将是一个速度更快,因为你不必击中SharedPreferences或数据库文件系统。
1
您可以将所有数据存储在SharedPreferences中,并且可以从应用程序的每个活动访问它们。
只要做到这一点像它在这里解释: http://developer.android.com/guide/topics/data/data-storage.html#pref
2
您可以使用
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
有任何活动,它会返回一个SharedPreferences
对象绑定到你的应用程序的软件包名称,不管是哪个活动你的作为上下文传递。
或者,您可以为您的共享首选项选择一个名称,并将其传递给活动的getSharedPreferences
方法(正如Sam_D和Graham在他们的答案中指出的那样)。
相关问题
- 1. SharedPreferences或SQLite数据库?
- 2. Android SQLite数据库和SharedPreferences
- 3. SharedPreferences与数据库vs JSON
- 4. 将sharedPreferences或数据库用于“一行”数据
- 5. Sharedpreferences不保存或加载数据
- 6. SharedPreferences是否存储在数据库中?
- 7. SharedPreferences用于我的数据库
- 8. SharedPreferences替换数据
- 9. 将数据从sharedpreferences发送到网络中的数据库
- 10. SharedPreferences或SQlite
- 11. SharedPreferences或Sqllite
- 12. 重新加载SharedPreferences数据
- 13. SharedPreferences两次保存数据
- 14. 在sharedpreferences中编辑数据
- 15. sharedpreferences不保存数据
- 16. 使用sharedpreferences保存数据
- 17. sharedPreferences不保存数据
- 18. Android - Sharedpreferences收集数据
- 19. 检索hashmap数据SharedPreferences
- 20. 云数据库或本地数据库
- 21. 关系数据库或NoSQL数据库
- 22. Android的SharedPreferences或sqllite
- 23. 库或数据库连接
- 24. 数据库或XML
- 25. sharedpreferences没有保存或加载我的数据的Android
- 26. 保存一些数据sqlite,SharedPreferences或文件?
- 27. 用于永久性数据存储的SQLite或SharedPreferences?
- 28. 编程决定Java或.NET,数据库或没有数据库
- 29. 数组或数据库表?
- 30. 数据库或数组