SharedPreferences未正确保存值

时间:2014-02-17 10:00:20

标签: android xamarin.android xamarin sharedpreferences

我正在尝试将字符串保存到共享首选项。我尝试这样做的方法如下:

ISharedPreferences _prefs = PreferenceManager.GetDefaultSharedPreferences(this);
ISharedPreferencesEditor _editor = _prefs.Edit();
_editor.PutString("myString", "123");
_editor.Commit();

再往下我试着打印出我的字符串:

_txtView.Text = _prefs.GetString("myString", "Can't find string");

当我运行应用程序时,我的textview现在正确打印出“123”。所以一切都按预期工作。然而;共享偏好的意义在于它是持久的。所以,如果我现在试着注释掉以下两行:

_editor.PutString("myString", "123");
_editor.Commit();

然后再次构建,我的textview显示“找不到字符串”。所以由于某种原因字符串没有被保存?谁知道为什么会这样?

谢谢!

2 个答案:

答案 0 :(得分:7)

在构建和部署应用程序到您的设备时,默认情况下Xamarin将删除任何现有的应用程序数据/缓存。这并不总是理想的,因为它会将您的数据重置为全新安装。

要保留数据,您需要更新选项:

  • 在Xamarin Studio中,选择工具>选项>项目> Android ...选中“在应用程序部署之间保留数据/缓存”

  • 在Visual Studio中,选择工具>选项> Xamarin> Android设置...选中“在应用程序部署之间保留数据/缓存”

执行此操作后,将保留在本地应用程序文件夹中创建的任何共享首选项或数据文件。

答案 1 :(得分:0)

然而,共享偏好的意义在于它是持久性的:它在应用程序执行之间是持久的。当您注释掉代码并再次启动时,您将创建一个新鲜应用程序,没有默认存储的首选项。这就是为什么当你发表评论时它不起作用的原因。

如果您希望它只在共享偏好设置中存储一次,那么您应该检查该应用是否正在首次执行,然后如果 true ,存储在共享首选项中。