将数据存储在可供所有活动访问的SharedPreferences中

时间:2012-06-29 15:04:33

标签: android sharedpreferences

我想使用SharedPreferences存储和检索我的应用中所有活动都可访问的数据。那可能吗?到目前为止,我一直这样做,以便为特定活动存储数据。

5 个答案:

答案 0 :(得分:7)

是。 SharePreferences正是这样做的。 在每项活动中你都可以:

SharedPreferences prefs = getSharedPreferences(ApplicationConstants.PREFERENCES, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();
editor.putString(name, value);
editor.commit();

然后在其他活动中检索值:

mPrefs.getString(name, "");

这是文档: http://developer.android.com/reference/android/content/SharedPreferences.html

这是一个很好的例子:

http://myandroidsolutions.blogspot.it/2012/03/android-preferenceactivity.html

答案 1 :(得分:1)

是的,这就是它的全部目的。

以下是您应该通过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");

答案 2 :(得分:1)

如果您想要访问所有活动中的值,我认为更好的方法是存储在自定义的应用程序类中以及稍后的活动中:

((CustomApplication)getApplication()).getStoredValue()

共享首选项存储在文件中,此文件访问速度较慢。

答案 3 :(得分:1)

我有更好的版本。有时当您尝试执行 getSharedPreferences 时,您可能会收到错误,因为找不到它。 这就是我在Android项目中存储值的方法。

添加

SharedPreferences sharedPreferences=this.getSharedPreferences("packagename", Context.MODE_PRIVATE);

 sharedPreferences.edit().putString("username", "specify name here").apply();

包名称可以直接从活动ex的顶部复制:com.example.name.projectname

<强>提取

String username = sharedPreferences.getString("username","");

答案 4 :(得分:0)

这是我创建函数的示例,用于设置并获取名为“ USER”的对象数据

用于设置共享首选项数据

public void saveUser(User usuario) {
        SharedPreferences sharedPref = getSharedPreferences("A", Context.MODE_PRIVATE); // sharedpreference set named "A"

        SharedPreferences.Editor editor = sharedPref.edit();
        editor.putString("name", usuario.getNombre());
        editor.putString("username", usuario.getUsername());
        editor.putString("pass", usuario.getContrasena());
        editor.putString("roll",usuario.getRol());
        editor.commit();
    }

获取共享首选项数据

public Usuario getUser() {
        SharedPreferences sharedPref = getSharedPreferences("A", Context.MODE_PRIVATE);   // sharedpreference set named "A"
        User usuario = new User();
        usuario.setNombre(sharedPref.getString("name", "null"));
        usuario.setUsername(sharedPref.getString("username", "null"));
        usuario.setContrasena(sharedPref.getString("pass", "null"));
        usuario.setRol(sharedPref.getString("roll", "null"));
        return usuario;
    }

重要:在这种情况下,将名称设置为sharePreference“ A”