抱歉我的英语不好 在我的应用程序中,我在共享首选项中保存令牌(它是一个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。 我该怎么办?
答案 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", "");