在Android中无法将SharedPreferences值从一个活动获取到另一个活动

时间:2014-03-05 10:47:32

标签: android sharedpreferences

我使用共享首选项来保存数据并从其他活动访问它。我使用了建议的方法但它们似乎没有用。

代码:

private static String Module_Pref="ModulePreference";

活动A:

 SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
        SharedPreferences.Editor editor = prefs.edit();
        editor.putString(key, value);
        editor.commit();

活动B:

sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
        tempValue= sharedPreferences.getString(Module_Pref, "empty");

活动C:

 SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
        SharedPreferences.Editor editor = prefs.edit();
        editor.putString(key, value);
        editor.commit();

如果我们第一次运行然后通过A,设置 nosave ,那么如果我们转到活动C然后保存数据。

这段代码有什么问题。我得到一个null。我查看了文件资源管理器,也没有保存pref文件。

5 个答案:

答案 0 :(得分:2)

使用此方法创建sharedPreference,然后使用相同的名称从同一应用程序中的任何活动中的任何位置访问它

SharedPreference sp;
sp = getApplicationContext().getSharedPreferences(My_PREFERENCE,
                context.MODE_PRIVATE);
Editor e = sp.edit();
e.put(key,value);
e.commit();

并且在另一个活动中获取相同的sharedPreference时使用此方法

SharedPreference sp;
sp = getApplicationContext().getSharedPreferences(My_PREFERENCE,
                context.MODE_PRIVATE);
sp.get(key,value);

`

答案 1 :(得分:1)

您应该用于输入这样的数据:

editor.putString(Module_Pref, "value that you want to store");
editor.commit();

现在要获取该String,您可以在存储值后使用它:

sharedPreferences.getString(Module_Pref, "empty");

答案 2 :(得分:0)

 Activity A:

        SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
                SharedPreferences.Editor editor = prefs.edit();
                editor.putString(key,value );
                editor.commit();

    Activity B:

    SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
            tempValue= sharedPreferences.getString(key, "emptyValue");

答案 3 :(得分:0)

sharedPreferences.getString(Module_Pref, "empty");

表示您想要检索key- Module_Pref的“值”,如果没有,默认情况下它将返回 - > “空”。

所以,

editor.putString(Module_Pref, value);

sharedPreferences.getString(key, "empty");

其中“key”与以下键中的键相同:

editor.putString(key, value);

答案 4 :(得分:0)

SharedPreferences sp = getSharedPreferences("main",0);
                SharedPreferences.Editor ed = sp.edit();
                ed.putString("personEmail",personEmail);
                ed.putString("personName",personName);
                ed.commit();

这用于在共享的pref& amp;中保存值。访问它使用 - >

    SharedPreferences sp = getSharedPreferences("main",0);
                sp.getString("personEmail",null);
                sp.getString("personName",null);