如何在Xamarin.Android中使用SharedPreferences?

Ric*_*ier 38 android xamarin.android xamarin

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

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

当我在Xamarin Studio IDE中输入"SharedPreferences"时,没有自动完成,所以我不知道该使用什么.


初步搜索interwebs带我到一个相关的问题,但只包含Android java:


总结一下:

  • 什么是Xamarin Android C#等同于Android Java SharedPreferences

Ric*_*ier 66

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

以相同的方式使用它,您将能够轻松地移植Android代码.


例如,要bool使用某些保存true/false,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
Run Code Online (Sandbox Code Playgroud)

访问保存的值:

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>);
Run Code Online (Sandbox Code Playgroud)

从这个示例中,您可以看到,一旦您知道要使用的正确C#接口,其余的就很容易了.关于如何使用SharedPreferences更复杂的情况,有许多Android java示例,这些可以非常容易地使用ISharedPreferences.

有关更多信息,请阅读此主题:


Mig*_*uez 24

您可以在Xamarin.Android中使用此示例作为SharedPreferences

首先,您需要使用:

ISharedPreferences //Interface for accessing and modifying preference data
ISharedPreferencesEditor // Interface used for modifying values in a ISharedPreferences
Run Code Online (Sandbox Code Playgroud)

您可以创建一个类似的类

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, "");
    }
}
Run Code Online (Sandbox Code Playgroud)

来自活动.

Context mContext = Android.App.Application.Context;
AppPreferences ap = new AppPreferences (mContext);
Run Code Online (Sandbox Code Playgroud)

如果你想节省一些价值:

string key = "123123";
ap.saveAccessKey (key);
Run Code Online (Sandbox Code Playgroud)

如果你想获得价值

string key = ap.getAccessKey();
Run Code Online (Sandbox Code Playgroud)

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


Yoh*_*ani 7

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

using Android.Preferences;
Run Code Online (Sandbox Code Playgroud)

另外,为了获得首选项,您必须将默认值添加为第二个参数,否则将无法编译

mInt = prefs.GetInt ("key_for_my_int_value", defaultInt);
Run Code Online (Sandbox Code Playgroud)