共享首选项值返回null

时间:2018-05-12 09:48:53

标签: android android-sharedpreferences

我有一个应用程序,我正在使用共享首选项。我调试了我的应用程序并意识到字符串值存储在共享首选项中。但是当我在其他一些活动中检索值时,它返回null

请参阅下面的代码:

活性1:

SharedPreferences preferences = getSharedPreferences("MyPref", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit(); 

editor.putString("NewEmailID", "example@xyz.com");

活性2:

SharedPreferences preferences = getSharedPreferences("MyPref", Context.MODE_PRIVATE);

String strEmailID = preferences.getString("NewEmailID", null);
if (strEmailID != null){
   lblEmailID.setText(strEmailID);
}

正如您在Activity1中看到的那样,我将字符串值存储在共享首选项中,而在Activity2中,我将从中检索值。

因此,strEmailID返回null。

我在这里做错了吗?

提前致谢..

2 个答案:

答案 0 :(得分:1)

在编辑器中放置内容后,必须使用apply或commit。

SharedPreferences preferences = getSharedPreferences("MyPref", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit(); 

editor.putString("NewEmailID", "example@xyz.com");
editor.apply();

应用是异步的,它不会阻止踏板并且不会返回true或false。此操作更快,因为即时更改内存中的值并稍后在其他线程中写入。但是,与使用在同一线程中写入的提交相比,少数值具有相同的性能。

答案 1 :(得分:0)

尝试:

SharedPreferences preferences = getSharedPreferences("MyPref", 
Context.MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit(); 
editor.putString("NewEmailID", "example@xyz.com");
editor.commit();