Android - 如何在代码中设置首选项
Posted
技术标签:
【中文标题】Android - 如何在代码中设置首选项【英文标题】:Android - How Do I Set A Preference In Code 【发布时间】:2010-10-07 19:32:45 【问题描述】:我有一个 android 应用程序,其中我在一个 XML 文件中有我的偏好,它工作正常。我现在想使用代码设置其中一个首选项,而不是显示整个首选项屏幕,我该怎么做?
【问题讨论】:
【参考方案1】:我假设您所指的首选项指的是应用程序的首选项,而不是 Android 手机设置。
要在您的应用程序运行之间存储首选项,您需要执行以下操作
创建一个 SharedPreferences 对象
SharedPreferences settings = getSharedPreferences(String n, MODE_PRIVATE);
String n 标识您的偏好,第二个参数是它们将被访问的模式
实例化一个编辑器对象
SharedPreferences.Editor editor = settings.edit();
注意:不要尝试 settings.editor.edit(),这不会产生持久对象,下面的代码也不起作用
将您的偏好写入缓冲区
editor.put...(String, value)
put 函数有很多,putString、putBoolean 等,其中 String 是 key ("version", "good run"),value 是 value ("1.5.2", true) em>
刷新缓冲区
editor.commit();
这实际上写入了您的偏好设置。如果您的应用程序在此行之前崩溃,则不会写入首选项。还有一个记录在案的错误:commit() 应该返回一个指示成功或失败的布尔值。上次我检查它总是返回 false。
这些首选项将存储在手机上,并且只有您的应用程序可以访问。
更多文档是here
【讨论】:
其实可以使用单行:prefs.edit().putInt(key, value).commit(); 任何想法这与 PreferenceActivity 有何不同,您是否可以参考 PreferenceActivity 的示例? 如果您不关心返回值,文档说从 API 级别 9 开始,您可以更好地调用apply();
而不是 commit();
虽然我在这里晚了 5 年,但是当我想通过 java 而不是在 xml 文件中为我的偏好创建一个新的布尔值时,使用@tomash 建议的方法失败了。尽管在创建密钥后使用他的线路确实有效。谁能解释一下 Will answer 和 tomash 有什么区别?他们不是都做同样的事情吗?
@OmarBizreh - tomash 所说的(一个班轮)与威尔回答的第 2-4 行完全相同。 (当然,您仍然需要创建一个首选项对象(第 1 行))。我不知道如果您在创建该首选项之前尝试第 1 行,然后稍后尝试使用该首选项会发生什么——您就是这样做的吗?如果是这样,那么解决方案是:无论您在代码中创建首选项(设置键)的任何位置,还要将您的类设置为全局以保存首选项。或者只是为了安全,每次都做第 1 行......【参考方案2】:
我试过了,但没有用:
SharedPreferences settings = getSharedPreferences(String n, MODE_PRIVATE);
试试这个:
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(this);
【讨论】:
说什么出了问题,而不是说“没用”会更有用。 (它没有编译?当你运行它时它崩溃了?返回的首选项列表是空的?)不过,+1 一个好的提示:看看我的应用程序,你的行是用来从 MainActivity 访问设置的;可以选择使用原始答案的行来访问 PreferenceFragment(包含 XML 描述用于显示/更改首选项的小部件的片段)中的代码中的设置。【参考方案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);
【讨论】:
以上是关于Android - 如何在代码中设置首选项的主要内容,如果未能解决你的问题,请参考以下文章