Domanda

Ho un'attività preferenze dove posso cambiare la lingua e il tema della mia candidatura. Da lì torno all'attività precedente tramite il tasto Indietro, e voglio ricreare l'attività.

sono riuscito a farlo reinizializzando il layout in onResume e anche chiamando onRestoreInstanceState da lì. Tutti i punti di vista vengono ripristinati correttamente, con le caselle di controllo controllato, se necessario, edittexts piene di testi che ci hanno lasciato in precedenza.

Ma ho anche un pulsante che inizialmente è disabilitato e viene abilitato solo quando un radiobutton sia selezionata. Il problema con esso è il seguente: verifico il pulsante radio, il pulsante viene abilitato. Poi vado a Impostazioni, modificare il tema lì, e ritorno alla prima attività. Quando arrivo lì, il pulsante radio viene ripristinato come controllato, ma il pulsante è disattivato.

Così sembra che il abilitato / disabilitato non è in corso il salvataggio in bundle, che sembra controintuitivo. E non ho trovato alcun codice nel sorgente Android che fa questo, anche. Mi manca qualcosa, o devo scrivere il mio codice per questo?

EDIT: A proposito, lo stato viene salvato solo per i panorami che hanno id. E questo tasto ha uno, vi garantisco che:)

È stato utile?

Soluzione

Si chiave qui è quello di vedere ciò che è effettivamente attivare il pulsante e per assicurarsi che sia coerente su ogni accesso all'applicazione.

Dalla sua dichiarazione:

  

Ma ho anche un pulsante che inizialmente è disabilitato e viene abilitato solo quando un radiobutton sia selezionata.

sembra che si dispone di un ascoltatore sul pulsante radio che consente il pulsante. Da questo, mi sembra di capire che il pulsante è inizialmente disabilitato, il che significa che dovrete cambiare che ogni volta che si esegue l'attività.

Le opzioni disponibili sono le seguenti:

  • Avere il pulsante radio impostare una sorta di preferenza globale che viene controllato in onResume, consentendo il pulsante, se necessario
  • Quando il pulsante radio è selezionata, modificare le impostazioni globali (o forse le impostazioni GUI) per quello in cui il pulsante è abilitato. Che può rimanere per sempre fino a quando il pulsante radio è di nuovo deselezionato.
  • Salvare l'enabledness in onSaveInstanceState come si parla

E 'difficile dire che è più appropriato perché non avete menzionato contesto del caso d'uso, ma vorrei evitare di inviarlo attraverso il fascio a meno che non si tratta di un'attività molto utilizzato di tanto in tanto. Si fa un sacco di senso per tenere traccia dell'impostazione radiobutton da una riporlo o cambiando la vista fino a nuovo avviso.

Altri suggerimenti

Il modo più semplice è quello di consentire il pulsante in onResume se il pulsante radio è selezionata.

Modifica : PreferenceGroup in grado di gestire le dipendenze tra Visualizzazioni, ma ha bisogno l'attività da una sottoclasse di PreferenceActivity .

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