Domanda

So come modificare il valore di un CheckBoxPreference, ma non riesco a farlo funzionare per un ListPreference.

Ecco come è costruito il mio schermo di preferenza:

    .
  • un CheckBox per il predefinito
  • A ListPreference per selezionare un colore diverso dal predefinito.

Il ListPreference è definito con il tasto "Titlecolor", come segue:

CharSequence[] entries = { "Dark grey", "Light grey", "Light red", "Red" };
CharSequence[] entryValues = { "#4c4c4c", "#b5b5b5", "#ab6a68", "#962622" };
final ListPreference color = (ListPreference) findPreference("titleColor");
color.setEntries(entries);
color.setEntryValues(entryValues);
.

Ora, quando seleziono un colore, lo faccio:

color.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
        public boolean onPreferenceChange(Preference preference, Object newValue) {
            System.out.println("In the onClick method");
            System.out.println("change title color");
            Editor editor2 = defaultColor.getEditor();
            editor2.putBoolean("defaultColor", false);
            editor2.commit();
            return true;
        }

    });
.

E questo sembra funzionare, anche se non sono sicuro di farlo correttamente.

Ora ho cercato di fare qualcosa di simile quando seleziono il colore predefinito, ma non riesco a ottenere la lista di deselezionare qualsiasi o controllare un colore che sarebbe il valore predefinito.

Qualche idea?

È stato utile?

Soluzione

Nel caso del CheckBox:

Se avessi un generatore di colore predefinito CheckBox, sarebbe stato risolto utilizzando android:dependency, ma dal momento che non ce l'hai, immagino che sia l'unico modo.

relativo al ListPreference, è abbastanza simile:

ListPreference lp = (ListPreference)findPreference("listPreference_key");
lp.setValue("");
.

Puoi controllare il Docs per sapere qualeI metodi sono disponibili

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top