无法通过活动获取SharedPreferences

时间:2014-01-23 17:31:17

标签: android sharedpreferences

抱歉我的英语不好 在我的应用程序中,我在共享首选项中保存令牌(它是一个Web应用程序)。在第一项活动中,我这样做:

(token = 123)
SharedPreferences sp = getPreferences(MODE_PRIVATE);
Editor ed = sp.edit();
ed.putString("token", Main.getToken()); 
ed.commit();
Log.d("Recieved token: ", sp.getString("token", "null")); // Recieved token: 123

如您所见,共享首选项已保存。
我有另一个活动,可以从浏览器调用以共享链接。
代码:

sp = getPreferences(MODE_PRIVATE);
Log.d("Token recieved: ", sp.getString("token", "null")); // null

但是在另一个活动上,共享prefs返回null。 我该怎么办?

2 个答案:

答案 0 :(得分:7)

解释为什么getPreferences()不适合你:

当您在未指定共享首选项名称的情况下调用getPreferences()时,它将使用调用Activity的类名作为共享首选项名称返回共享首选项。这就是你在其他活动中获得null的原因 - 它实际上是你所指的不同的共享首选项集。

使用getSharedPreferences,使用您喜欢的任何首选项名称:

getSharedPreferences("my_prefs", Activity.MODE_PRIVATE);

然后将在整个申请中提供。但是,如果您不需要引用存储在特定Activity之外的数据,则使用getPreferences()是合适的。

答案 1 :(得分:1)

使用如下,

SharedPreferences mAppSettings = getSharedPreferences("SharedPref", MODE_PRIVATE);
        SharedPreferences.Editor prefEditor = mAppSettings.edit();
        prefEditor.putString(""token, "");
        prefEditor.commit();

用于检索,,,

final SharedPreferences mAppSettings1 = getSharedPreferences(
                "SharedPref", MODE_PRIVATE);
             String token= mAppSettings1.getString("token", "");