Android - 如何在代码中设置首选项

41 android android-preferences sharedpreferences

我有一个Android应用程序,我在xml文件中有我的首选项,工作正常.我现在想要使用代码设置其中一个首选项而不是显示整个首选项屏幕,我将如何进行此操作?

Wil*_*ill 121

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

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

  1. 创建SharedPreferences对象

    SharedPreferences settings = getSharedPreferences(String n, MODE_PRIVATE);
    
    Run Code Online (Sandbox Code Playgroud)

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

  2. 实例化一个Editor对象

    SharedPreferences.Editor editor = settings.edit();
    
    Run Code Online (Sandbox Code Playgroud)

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

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

    editor.put...(String, value)
    
    Run Code Online (Sandbox Code Playgroud)

    有很多put函数,putString,putBoolean等.String是键("版本","运行良好"),值是值("1.5.2",true)

  4. 冲洗缓冲区

    editor.commit();
    
    Run Code Online (Sandbox Code Playgroud)

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

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

这里有更多文档

  • 你实际上可以使用one-liner:prefs.edit().putInt(key,value).commit(); (44认同)
  • 任何想法如何与PreferenceActivity不同,您是否可以参考PreferenceActivity的示例? (2认同)
  • 如果你不关心返回值,文档说从 API 级别 9 你可以更好地调用 `apply();` 而不是 `commit();` (2认同)

Ada*_*dan 8

我尝试了这个但是没有用:

SharedPreferences settings = getSharedPreferences(String n, MODE_PRIVATE);
Run Code Online (Sandbox Code Playgroud)

试试这个:

SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(this);
Run Code Online (Sandbox Code Playgroud)