我需要手动控制CheckBoxPreference
;我必须检查我自己的数据中的条件,以确定是否可以设置首选项。
我该怎么做?我当前的代码如下,但它似乎不起作用。
CheckBoxPreference buyPref = (CheckBoxPreference) findPreference("pref_billing_buy");
buyPref.setOnPreferenceClickListener(new OnPreferenceClickListener() {
public boolean onPreferenceClick(Preference preference) {
if (something) {
return true; // checkbox should be checked
} else {
return false; // checkbox should be unchecked
}
我应该总是用return false
然后用
buyPref.setChecked(true);
如果点击被处理,您应该始终返回true。来自API:
public abstract boolean onPreferenceClick (Preference preference)
自:API Level 1
当一个首选项被点击时调用。
参数-
preference
-单击的首选项。
-
True
-如果点击被处理。
CheckBoxPreference buyPref = (CheckBoxPreference) findPreference("pref_billing_buy");
buyPref.setOnPreferenceClickListener(new OnPreferenceClickListener() {
public boolean onPreferenceClick(Preference preference) {
if (buyPref.isChecked()) {
// checkbox is checked, do something
} else {
// checkbox not checked, do something else
}
return true;
}
首选项管理器应该处理项是否被选中,但如果您想自己做:
CheckBoxPreference buyPref = (CheckBoxPreference) findPreference("pref_billing_buy");
buyPref.setOnPreferenceClickListener(new OnPreferenceClickListener() {
public boolean onPreferenceClick(Preference preference) {
// this will toggle the checkbox
buyPref.setChecked(!buyPref.isChecked());
return true;
}
我想你需要这样的东西:
final CheckBoxPreference buyPref = (CheckBoxPreference) findPreference("logs");
buyPref.setOnPreferenceChangeListener(new OnPreferenceChangeListener()
{
@Override
public boolean onPreferenceChange(final Preference preference,
final Object newValue)
{
boolean condition = false;
// set condition true or false here according to your needs.
buyPref.setChecked(condition);
Editor edit = preference.getEditor();
edit.putBoolean("pref_billing_buy", condition);
edit.commit();
return false;
}
});
你希望总是从这个返回false,这样Android就不会试图自己写首选项。查看OnPreferenceChangeListener
的文档获取更多信息。
请注意,所有这些都将发生在UI线程上,所以如果你需要做任何长时间运行的事情,我会把它放在AsyncTask
和ProgressDialog
中,这样用户就不会感到沮丧。
你可以用这个来检查复选框是否被选中
if(buyPref.isChecked())
{
//Do What you want
}其他的{做点别的事情}
设置复选框,
buypref.setChecked(true);
希望有帮助!
干杯Nithin