Come modificare un valore di ListPreference dal codice Java in Android
-
17-09-2020 - |
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?
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