我正在使用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
的实例,这样我就可以在不创建活动或视图的情况下设置该死的东西。
答案 0 :(得分:4)
你可以。但它不像setBoolean()。
你必须这样:
_sharedPref.Edit().PutBoolean("key","value").Commit();
// or
_sharedPref.Edit().PutBoolean("pref_myPref", true).Commit();