Android: utilizzando ListPreference e il recupero di stringa chiave
-
21-09-2019 - |
Domanda
Ho un menu delle impostazioni che si apre e si tratta di un menu del tipo ListPreference. Si è associato con un file settings.xml dove ci sono 'array-strings' all'interno di esso. Tutto funziona bene, ma non so come recuperare la preferenza degli utenti.
Per fare un esempio, diciamo che l'utente sceglie un colore (rosso, verde o blu). La lista che ho fatto nei miei 'array-strings' contiene il testo rosso, verde e blu. All'interno il mio codice, vorrei fare qualcosa se l'utente ha scelto rosso, qualcosa d'altro se scelgono blu, ecc, ecc Dovrei usare una dichiarazione 'caso' o un 'se' dichiarazione? E, soprattutto, come faccio a recuperare la preferenza degli utenti - la chiave? (Sto controllando per un valore booleano?)
Soluzione
Se si utilizza ListPreference e non avete disattivato stato persistente, è possibile leggere il valore selezionato dai SharedPreferences, dopo l'impostazione è completata.
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
prefs.getString(yourkey, "defvalue");
Inoltre è possibile iscriversi alla onClick
evento, e si utilizza il codice Rpond menzionato.
Altri suggerimenti
Se l'elenco viene mostrato in una finestra di dialogo, allora è necessario specificare un OnClickListener che chiamerà un metodo onClick. Controllare l'esempio di seguito. Nell'esempio l'indice passato alla onClick è l'indice dell'elemento dell'array.
new AlertDialog.Builder(this).setTitle("Settings").setItems(R.array.colors, new DialogInterface.onClickListener() { void onClick(DialogInterface d, int index) {
switch(index) {
CASE 0: // do something
CASE 1: // do something else}}};