44

我有一个 Android 应用程序,其中我在 XML 文件中有我的偏好,它工作正常。我现在想使用代码设置其中一个首选项,而不是显示整个首选项屏幕,我该怎么做呢?

4

3 回答 3

123

我假设首选项是指您的应用程序的首选项,而不是 Android 手机设置。

要在您的应用程序运行之间存储首选项,您需要执行以下操作

  1. 创建一个 SharedPreferences 对象

    SharedPreferences settings = getSharedPreferences(String n, MODE_PRIVATE);
    

    字符串 n 标识您的偏好,第二个参数是它们将被访问的模式

  2. 实例化一个编辑器对象

    SharedPreferences.Editor editor = settings.edit();
    

    注意:不要尝试 settings.editor.edit(),这不会产生持久对象,下面的代码也不起作用

  3. 将您的首选项写入缓冲区

    editor.put...(String, value)
    

    有许多put函数,putString,putBoolean等。String是key(“version”,“good run”),value是value(“1.5.2”,true)

  4. 冲洗缓冲区

    editor.commit();
    

    这实际上写入了您的偏好设置。如果您的应用程序在此行之前崩溃,则不会写入首选项。还有一个记录在案的错误:commit() 应该返回一个指示成功或失败的布尔值。最后我检查它总是返回假。

这些首选项将存储在手机上,并且只能由您的应用程序访问。

更多文档在这里

于 2009-02-16T06:02:11.153 回答
8

我试过这个但没有奏效:

SharedPreferences settings = getSharedPreferences(String n, MODE_PRIVATE);

试试这个:

SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(this);
于 2011-12-01T17:04:33.197 回答
3

您可以使用以下代码在 sharedpreferences 中保存一些内容

public static void save(String valueKey, String value) {
    SharedPreferences prefs = PreferenceManager
            .getDefaultSharedPreferences(context);
    SharedPreferences.Editor edit = prefs.edit();
    edit.putString(valueKey, value);
    edit.commit();
    }

阅读偏好:

public static String read(String valueKey, String valueDefault) {
    SharedPreferences prefs = PreferenceManager
            .getDefaultSharedPreferences(context);
   return prefs.getString(valueKey, valueDefault);
}
于 2016-04-29T05:32:54.730 回答