共享首选项值返回空值



>我有一个使用共享首选项的应用程序。我调试了我的应用程序,并意识到字符串值存储在共享首选项中。但是当我在其他一些活动中检索值时,它返回 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);
}

正如您在活动 1 中看到的,我将字符串值存储在共享首选项中,而在活动 2 中,我正在从中检索值。

因此,strEmailID返回 null。

我在这里做错了什么吗?

提前谢谢..

在编辑器中放置某些内容后,您必须使用 apply 或 comit。

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

应用是异步的,它不会阻止胎面,也不会返回 true 或 false。此操作工作得更快,因为会立即更改内存中的值,稍后将其写入其他线程。但是,与使用在同一线程中写入的提交相比,很少有值具有相同的性能。

尝试:

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

Addeditor.commit((;当您将值保存到 SharePreferences 中时。

最新更新