2

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);
4

3 に答える 3

4

クリックが処理された場合は、常にtrueを返す必要があります。APIから:

public abstract boolean onPreferenceClick (Preference preference)

以来:APIレベル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; 
}
于 2011-07-12T18:42:12.937 に答える
3

私はあなたがこのようなものが欲しいと思います:

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;
    }
});

Androidが設定自体を書き込もうとしないように、これから常にfalseを返します。詳細については、ドキュメントを参照してOnPreferenceChangeListenerください。

これはすべてUIスレッドで行われることに注意してください。したがって、長時間実行する必要がある場合は、ユーザーがイライラしないように、を使用してAsyncTaskスローします。ProgressDialog

于 2011-07-12T19:24:06.330 に答える
1

これを使用して、チェックボックスがオンになっているかどうかを確認できます

if(buyPref.isChecked())
{ 

//やりたいことをする

}else{何か他のことをする}

チェックボックスを設定するには、

buypref.setChecked(true);

それが役に立てば幸い!

乾杯ニティーン

于 2011-07-12T17:47:59.600 に答える