我想在我的Xamarin.Android项目中保存并检索一些应用程序设置。
我知道在Android(java)中,我使用类SharedPreferences
来存储此信息,但我不知道如何将其转换为Xamarin C#。
当我输入" SharedPreferences"进入Xamarin Studio IDE,没有自动完成功能,因此我不知道该使用什么。
对互联网的初步搜索带我去了一个相关的问题,但只包含Android java:
总结一下:
SharedPreferences
的 Xamarin Android C#等效是什么?答案 0 :(得分:65)
与SharedPreferences
相当的Xamarin.Android是一个名为ISharedPreferences
的界面。
以相同的方式使用它,您将能够轻松地移植Android代码。
例如,要使用某些bool
保存真/假Context
,您可以执行以下操作:
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
轻松移植这些示例。
有关更多信息,请阅读以下主题:
答案 1 :(得分:25)
您可以将此示例用于Xamarin.Android中的SharedPreferences
首先,您需要使用:
ISharedPreferences //Interface for accessing and modifying preference data
ISharedPreferencesEditor // Interface used for modifying values in a ISharedPreferences
您可以创建类似的类
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();
我希望这个例子可以帮助你
答案 2 :(得分:7)
我在使用PreferenceManager时遇到了问题,如示例所示。我在顶部添加了此代码,现在我很好地使用它。
using Android.Preferences;
另外,要获得首选项,您必须将默认值添加为第二个参数,否则将无法编译
mInt = prefs.GetInt ("key_for_my_int_value", defaultInt);
答案 3 :(得分:2)
不确定您是否仍然不知道,但是请确保处置变量(如果它们在函数中):
prefs.Dispose();
prefEditor.Dispose();
一段时间以来,我在应用程序上崩溃/冻结,因为不再需要时就不分配内存。