Ho riscontrato alcune funzionalità inattese (e incredibilmente frustranti) durante il tentativo di ripristinare lo stato di un elenco di CheckBox
dopo una rotazione dello schermo. Ho pensato che prima avrei cercato di dare una spiegazione testuale senza il codice, nel caso qualcuno fosse in grado di determinare una soluzione senza tutti i dettagli cruenti. Se qualcuno ha bisogno di maggiori dettagli, posso postare il codice.CheckBox Android - Ripristino dello stato dopo la rotazione dello schermo
Ho una lista a scorrimento di complessi View
s che contengono CheckBox
es. Non sono riuscito a ripristinare lo stato di queste caselle di controllo dopo una rotazione dello schermo. Ho implementato onSaveInstanceState
e ho trasferito con successo l'elenco delle caselle di controllo selezionate al metodo onCreate
. Questo viene gestito passando un long[]
di ID database su Bundle
.
In onCreate()
Controllo lo Bundle
per l'array di ID. Se la matrice è lì, la utilizzo per determinare quali caselle di controllo controllare quando viene creato l'elenco. Ho creato una serie di metodi di test e ho confermato che le caselle di controllo sono state impostate correttamente, in base all'array ID. Come ultimo controllo, sto verificando gli stati di tutte le caselle di controllo alla fine di onCreate(
). Tutto sembra a posto ... a meno che non ruoti lo schermo.
Quando ruoto lo schermo, accade una delle due cose: 1) Se viene selezionato un numero qualsiasi di caselle di controllo, tranne l'ultimo, tutte le caselle di controllo sono disattivate dopo una rotazione. 2) Se l'ultima casella di controllo è selezionata prima della rotazione, tutte le caselle di controllo sono selezionate dopo la rotazione.
Come ho detto, controllo lo stato delle scatole alla fine del mio onCreate()
. Il fatto è che lo stato delle caselle alla fine di onCreate
è corretto in base a ciò che ho selezionato prima della rotazione. Tuttavia, lo stato delle caselle sullo schermo non riflette questo.
Inoltre, ho implementato setOnCheckChangedListener()
e mi hanno confermato che dello stato le mie caselle di controllo vengono alterati dopo miei onCreate
metodo restituisce casella di ogni controllo.
Qualcuno ha un'idea di cosa sta succedendo? Perché lo stato delle mie caselle di controllo cambia dopo la restituzione del metodo onCreate
?
Grazie in anticipo per il vostro aiuto. Ho cercato di decifrarlo per un paio di giorni. Dopo aver scoperto che le mie caselle di controllo stavano apparentemente cambiando da qualche parte fuori dal mio codice, ho pensato che fosse giunto il momento di chiedere in giro.
Credo che suResume venga chiamato dopo onCreate quando si esegue un cambiamento di orientamento. Qualcosa sta succedendo? –