如何在Xamarin.Android中使用SharedPreferences?

我想保存和检索我的Xamarin.Android项目中的一些应用程序设置。

我知道在Android(java)中,我使用SharedPreferences类来存储这些信息,但我不知道如何将其转换为Xamarin C#。

当我在Xamarin Studio IDE中键入“SharedPreferences”时,没有自动完成,所以我不知道该怎么用。


最初的interwebssearch带我到一个相关的问题,但只包含Android的Java:

  • 在xamarin中使用共享首选项

所以总结一下:

  • 什么是Xamarin Android C#相当于 Android Java的SharedPreferences

Xamarin.Android相当于SharedPreferences是一个名为ISharedPreferences的接口。

以相同的方式使用它,您将可以轻松地跨越Android代码。


例如,要使用某些Context保存true / false bool ,可以执行以下操作:

 ISharedPreferences prefs = PreferenceManager.GetDefaultSharedPreferences (mContext); ISharedPreferencesEditor editor = prefs.Edit (); editor.PutBoolean ("key_for_my_bool_value", mBool); // editor.Commit(); // applies changes synchronously on older APIs editor.Apply(); // applies changes asynchronously on newer APIs 

访问保存的值使用:

 ISharedPreferences prefs = PreferenceManager.GetDefaultSharedPreferences (mContext); mBool = prefs.GetBoolean ("key_for_my_bool_value", <default value>); mInt = prefs.GetInt ("key_for_my_int_value", <default value>); mString = prefs.GetString ("key_for_my_string_value", <default value>); 

从这个示例中,你可以看到,一旦你知道了正确的C#接口使用,其余的很容易。 有很多关于如何在更复杂的情况下使用SharedPreferences Android java示例,并且可以使用ISharedPreferences轻松移植这些ISharedPreferences

欲了解更多信息,请阅读此主题:

  • Xamarin论坛上的Android共享首选项

你可以在Xamarin.Android中为你的SharedPreferences使用这个例子

首先,你需要使用:

 ISharedPreferences //Interface for accessing and modifying preference data ISharedPreferencesEditor // Interface used for modifying values in a ISharedPreferences 

你可以创build一个类似的类

 public class AppPreferences { private ISharedPreferences mSharedPrefs; private ISharedPreferencesEditor mPrefsEditor; private Context mContext; private static String PREFERENCE_ACCESS_KEY = "PREFERENCE_ACCESS_KEY"; public AppPreferences (Context context) { this.mContext = context; mSharedPrefs = PreferenceManager.GetDefaultSharedPreferences(mContext); mPrefsEditor = mSharedPrefs.Edit (); } public void saveAccessKey(string key){ mPrefsEditor.PutString(PREFERENCE_ACCESS_KEY, key); mPrefsEditor.Commit(); } public string getAccessKey(){ return mSharedPrefs.GetString(PREFERENCE_ACCESS_KEY, ""); } } 

从活动。

 Context mContext = Android.App.Application.Context; AppPreferences ap = new AppPreferences (mContext); 

如果你想保存一些值:

 string key = "123123"; ap.saveAccessKey (key); 

如果你想获得价值

 string key = ap.getAccessKey(); 

我希望这个例子可以帮助你

例如,使用PreferenceManager遇到了麻烦。 我在顶部添加了这个代码,现在我很好用。

 using Android.Preferences; 

不知道如果这是正确的方式,

另外,为了获得首选项,你必须添加默认值作为第二个参数,否则将不能编译

 mInt = prefs.GetInt ("key_for_my_int_value", defaultInt);