我的应用程序中有两个活动说A& B.活动A需要B存储的数据(当前共享首选项)。但是要查询活动A中的数据,我需要B的上下文。但是,活动A没有任何方法来获取活动B的上下文(根据应用程序流程)。有没有办法或使用数据库将是一个更好的选择??
答案 0 :(得分:5)
如果您要存储在SharedPreferences中,那么您不需要活动B的上下文。活动A的上下文可以访问应用程序的SharedPreferences,因为它们是应用程序的“全局”。
代码示例
ActivityA.this.getSharedPreferences("SOMETHING", MODE_PRIVATE);
至于定义是否需要数据库,您没有说明您存储的数据是什么。因此无法分辨。
答案 1 :(得分:4)
为什么需要活动A的上下文?您可以在每个活动中使用getApplicationContext().getSharedPreferences()
来存储/检索SharedPreferences。
此外,根据您存储的数据,您可能希望使用Intent将数据从活动A传递到活动B.例如,要从A启动活动B,您将使用以下内容:< / p>
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或数据库来访问文件系统。
答案 2 :(得分:2)
您可以使用
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
使用任一活动,它会返回与您应用的包名绑定的SharedPreferences
对象,无论您将哪个活动作为上下文传递。
或者,您可以为共享偏好设定一个名称,并将其传递给活动的getSharedPreferences
方法(正如Sam_D和Graham在答案中指出的那样)。
答案 3 :(得分:1)
您可以将所有数据存储在SharedPreferences中,并且可以从应用程序中的每个活动访问它们。
就像它在这里解释的那样: http://developer.android.com/guide/topics/data/data-storage.html#pref