【发布时间】:2013-01-20 04:15:54
【问题描述】:
我想使用预定义的共享首选项来设置 checkBoxPreference 的值,并使用 checkBoxPreference 设置共享首选项。我试过这段代码,但即使我知道“pre_definied_shared_prefs”存在,checkboxPref 总是最终为空。
final CheckBoxPreference checkboxPref = (CheckBoxPreference) getPreferenceManager().findPreference("pre_defined_shared_prefs");
checkboxPref.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
public boolean onPreferenceChange(Preference preference, Object newValue) {
Boolean b = (Boolean) newValue;
Intent i = getIntent();
Integer show_num = i.getIntExtra("show_num", -1);
SettingsManager s = new SettingsManager();
s.setShowNotification(show_num, b, getApplicationContext());
return true;
}
});
为什么会这样,我该如何解决?
【问题讨论】:
-
你能粘贴你的偏好xml文件吗?你的 checkboxpref 有 android:key 属性吗?
-
是的,但我不想使用该属性。我有一个函数可以根据调用它来设置“pre_defined_share_prefs”。
-
所以你说的是你的密钥是由某个函数设置的,但它没有在 xml 中设置。我对么?在您尝试获取您的偏好之前是否调用了您的函数。
-
在
setOnPreferenceChangeListener之前我会做final CheckBoxPreference checkboxPref = (CheckBoxPreference) getPreferenceManager().findPreference(function_that_outputs_pre_created_key());。我可以这样做吗? -
这取决于您的函数如何输出密钥。该键必须是一个真实的键,该键已在 XML 中或通过在 Java 代码中的 Preference 上调用 setKey() 设置为首选项。如果键只是一个实际上没有附加到首选项的字符串,那么它就没有意义了。
标签: android