如何手动处理复选框状态



我需要手动控制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线程上,所以如果你需要做任何长时间运行的事情,我会把它放在AsyncTaskProgressDialog中,这样用户就不会感到沮丧。

你可以用这个来检查复选框是否被选中

if(buyPref.isChecked())
{ 

//Do What you want

}其他的{做点别的事情}

设置复选框,

buypref.setChecked(true);

希望有帮助!

干杯Nithin

相关内容

  • 没有找到相关文章

最新更新