如何在Xamarin.Android中使用SharedPreferences?

时间:2014-10-31 06:12:10

标签: android xamarin xamarin.android

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

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

当我输入" SharedPreferences"进入Xamarin Studio IDE,没有自动完成功能,因此我不知道该使用什么。


对互联网的初步搜索带我去了一个相关的问题,但只包含Android java:


总结一下:

  • Android Java' SharedPreferences Xamarin Android C#等效是什么?

4 个答案:

答案 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();

一段时间以来,我在应用程序上崩溃/冻结,因为不再需要时就不分配内存。