在这些活动都可以访问SharedPreferences存储数据(Storing data in Sh

2019-09-18 19:20发布

我想存储和检索数据,对于使用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