我想存储和检索数据,对于使用SharedPreferences在我的应用程序的所有活动进行访问。 那可能吗? 到现在为止,我已经做了这样的数据被存储为特定的活动。
Answer 1:
是。 SharePreferences做的正是这一点。 在每一个活动,你可以这样:
SharedPreferences prefs = getSharedPreferences(ApplicationConstants.PREFERENCES, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();
editor.putString(name, value);
editor.commit();
然后检索其他activty这样做值:
mPrefs.getString(name, "");
这是文档: http://developer.android.com/reference/android/content/SharedPreferences.html
这是一个很好的例子入手:
http://myandroidsolutions.blogspot.it/2012/03/android-preferenceactivity.html
Answer 2:
是的,这就是它的全部目的。
这里是你应该怎么写呢,通过Editor
final SharedPreferences shp = ctx.getSharedPreferences(ctx.getString(R.string.app_name), Context.MODE_PRIVATE);
final SharedPreferences.Editor ed = shp.edit();
ed.putString("var1", "var1");
ed.putString("var2", "var2");
并加载它:
shp.getString("var1", "defvalue");
Answer 3:
如果您要访问值所有的活动中,我认为更好的办法是在自定义的应用程序类,后来在你可以储存活动:
((CustomApplication)getApplication()).getStoredValue()
共享偏好存储在文件中,该文件的访问速度变慢。
Answer 4:
我有一个更好的版本。 因为有时候,当你尝试做getSharedPreferences,因为它找不到你可能会得到一个错误。 这是我存放在我的Android项目的值。
加
SharedPreferences sharedPreferences=this.getSharedPreferences("packagename", Context.MODE_PRIVATE);
sharedPreferences.edit().putString("username", "specify name here").apply();
包名称可以从活动前的顶部直接复制:com.example.name.projectname
取回
String username = sharedPreferences.getString("username","");
文章来源: Storing data in SharedPreferences accessible to all activities