我正在使用Xamarin并开始将iOS应用程序转换为Android应用程序的过程,在检索和设置首选项时遇到了障碍。在iOS中,我只需要使用NSUserDefaults.StandardUserDefaults
获得NSUserDefaults
,然后我可以使用BoolForKey
获得bool
,并用SetBool
设置它。然而,我找不到与安卓系统相当的软件。
在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容器将酌情提供Settings
服务的Android或iOS版本),所以我不想在视图中处理它。我尽量保持抽象。
我一直在看这个:
http://developer.android.com/guide/topics/ui/settings.html
但我很难翻译成Xamarin C#代码,并使其按我希望的方式工作。我希望能够取回我的CheckBoxPreference
的一个实例,这样我就可以在不创建"活动"或视图的情况下设置该死的东西。
您可以。但它不仅仅是setBoolean()。
你必须这样做:
_sharedPref.Edit().PutBoolean("key","value").Commit();
// or
_sharedPref.Edit().PutBoolean("pref_myPref", true).Commit();