ListPreference Array Entry Disable CheckBox Preference - PullRequest
2 голосов
/ 28 апреля 2011

Как отключить предпочтение CheckBox в соответствии с выбором массива в ListPreference?

Что у меня есть, если выбран автоматический режим или ручной режим. Я не хочу, чтобы CheckBox управлял инверсией оси акселерометрабыть включенным.Как я могу сделать это в режиме реального времени?Спасибо за совет.

Джейсон

<?xml version="1.0" encoding="UTF-8"?>
<resources>

<string-array name="game_mode_text">
        <item>Auto Mode</item>
        <item>Manual Mode</item>
        <item>Accelerometer Mode</item>
    </string-array>
    <string-array name="game_mode_values">
        <item>0</item>
        <item>1</item>
        <item>2</item>
    </string-array>
</resources>  





 @Override
    public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen,
            final Preference preference) {
            ListPreference accelMode = (ListPreference) findPreference("ModeKey");
            CheckBoxPreference checkBoxPreference = (CheckBoxPreference)findPreference("invertAccelKey");
        if(preference.equals(accelMode)) {
            String value = preference.getSharedPreferences().getString("ModeKey", "0");

            if(value.equalsIgnoreCase("0") || value.equalsIgnoreCase("1")) {
                checkBoxPreference.setEnabled(false);
            }else 
                checkBoxPreference.setEnabled(true);
        }
        return true;
    }

Ответы [ 2 ]

0 голосов
/ 28 апреля 2011

Вы должны переопределить

 @Override
 public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) 
{
    //here you can disable  if Auto Mode is selected by 
     pref.setEnabled(false)

}

EDIT1

 public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen,
            final Preference preference) {

     if(preference.equals("MyListPreference")) {

          String value = preference.getSharedPreferences().getString("KEY", "Default value");
if(value.equalsIgnoreCase("Value")) {
    //Disable checkbox preference
}
        }
  }

EDIT2

@Override
    public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen,
            final Preference preference) {
ListPreference MyListPreference = (ListPreference) findPreference("MyListPreferenceKey");
        if(preference.equals(MyListPreference)) {

            String value = preference.getSharedPreferences().getString("KEY", "Default value");
            if(value.equalsIgnoreCase("Value")) {
                CheckBoxPreference checkBoxPreference = (CheckBoxPreference)findPreference("checkBoxPreferenceKey");
                checkBoxPreference.setEnabled(false);
            }
        }
        return true;
    }
0 голосов
/ 28 апреля 2011

Я думаю, что единственный способ добиться этого - установить Preference.OnPreferenceChangeListener для ListPreference и изменить состояние CheckBoxPreference в соответствии с выбранным значением.

...