在Android中设置用户首选项

时间:2013-11-19 15:00:06

标签: android xamarin application-settings

我正在使用Xamarin并开始将iOS应用程序转换为Android应用程序,我遇到了检索和设置首选项的障碍。在iOS中,我只使用NSUserDefaults获得NSUserDefaults.StandardUserDefaults,然后我可以使用bool获得BoolForKey并将其设置为SetBool。但是,我无法找到Android的等价物。

在Android中,我设置了一个Preferences.xml文件,如下所示:

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
  <CheckBoxPreference
    android:key="pref_myPref"
    android:title="My Bool Pref"
    android:summary="A Boolean Preference"
    android:defaultValue="true"/>
</PreferenceScreen>

然后我可以这样做:

private ISharedPreferences _sharedPref = PreferenceManager.GetDefaultSharedPreferences(Setup.GetApplicationContext());

其中Setup.GetApplicationContext是一个静态方法,它返回我在创建Setup时保存的上下文,然后我可以得到我的偏好:

_sharedPref.GetBoolean("pref_myPref", true);

ISharedPreferences没有Set...个功能?!?我如何在代码中设置首选项?

这是MVVMCross应用程序的一部分,设置代码应该存在于视图模型的级别(IoC容器将根据需要提供Android或iOS版本的Settings服务),所以我不喜欢我不想在视图中处理它。我试图保持抽象。

我一直在看这个:

http://developer.android.com/guide/topics/ui/settings.html

但是我很难翻译成Xamarin C#代码并使其按照我想要的方式工作。我希望能够取回CheckBoxPreference的实例,这样我就可以在不创建活动或视图的情况下设置该死的东西。

1 个答案:

答案 0 :(得分:4)

你可以。但它不像setBoolean()。

你必须这样:

 _sharedPref.Edit().PutBoolean("key","value").Commit();
 // or
 _sharedPref.Edit().PutBoolean("pref_myPref", true).Commit();