【发布时间】:2012-11-08 10:08:08
【问题描述】:
我正在使用 context.getSharedPreference 而不是 getDefaultSharedPreferences。 意思是:
SharedPreferences checkboxSetting = context.getSharedPreferences(
"myPreferenceDB", Context.MODE_PRIVATE);
boolean flag = checkboxSetting.getBoolean("checkboxKey",true);
还有preference.xml:
<CheckBoxPreference
android:key="checkBoxPrefff"
android:title="@string/title"
android:defaultValue="true"/>
应用程序设置有一个复选框首选项,我想获取它的值,选中或未选中。
这行得通吗?
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,
String key) {
if (key.equalsIgnoreCase("checkBoxPrefff")) {
sharedPreferences.getBoolean(key,true);
}
}
sharedPreferences 是使用默认数据库(..._preference.xml)还是我定义的数据库(“myPreferenceDB”)? 键是“checkboxKey”还是为空?
因为当我想获得像这样的价值时
SharedPreferences temp = context.getSharedPreferences(
"myPreferenceDB", Context.MODE_PRIVATE);
boolean flag = temp.getBoolean("checkboxKey",true);
这是错误的并返回 defValue (true) 。但是当使用like时
SharedPreferences temp = PreferenceManager.getDefaultSharedPreferences(context);
boolean flag = temp.getBoolean("checkboxKey",true);
它有效。
【问题讨论】:
-
"sharedPreferences 是使用默认数据库 ( ..._preference.xml ) 还是我定义的数据库 ("myPreferenceDB" )" - 这取决于您向函数传递的内容。也是您的密钥
checkboxKey或checkBoxPrefff。还有equalsIgnoreCase? equalsIgnoreCase ?
标签: android android-preferences