Ho un componente personalizzato con un RadioGroup che ha due RadioButton, ID @+id/radioButton1
e @+id/radioButton2
. D'altra parte, c'è un TabActivity con cinque schede. Su ogni scheda, questo componente viene utilizzato più di una volta.Visualizzazioni con gli stessi ID che ottengono gli stessi attrs al momento del ripristino
Ecco il problema, quando si cambia l'orientamento e l'attività viene ricreata, tutto il RadioButton è caricato con gli stessi attrs, questo include android:text
, android:margin
e anche le attrs stile che ho creato. Succede anche con tutti i CheckBox che hanno gli stessi ID.
Ho passato un po 'di tempo a cercare di scoprire perché questo stava accadendo e ho concluso che Android lo sta facendo su onRestoreInstanceState. Se commento la linea che chiama il metodo super funziona bene.
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
// super.onRestoreInstanceState(savedInstanceState);
}
È così che dovrebbe essere? O cosa si potrebbe fare per causare questo?
Suppongo che non si tratti di un comportamento normale perché quando viene creata una vista personalizzata, si gonfia lo stesso layout con le stesse viste con gli stessi ID. Quindi non è possibile creare un'istanza di una nuova vista personalizzata che genera ID diversi per il suo bambino ogni volta. Utilizzare il codice sopra o android:configChanges
sul file manifest sembra essere una cattiva soluzione per me. Quindi, ogni aiuto è apprezzato.
ho vissuto anche questo. In realtà, ho trascorso un paio di giorni cercando di rintracciare questo bug verso il basso. La parte peggiore è, nel mio caso, questi punti di vista ricevono un valore cattivo e ciò innesca immediatamente un cambiamento nello stato della cosa rappresentata dalla Vista, il che significa che sto corrompendo lo stato Sto vedendo questo comportamento in un SeekBar incorporato in una vista personalizzata che raggruppa un SeekBar con qualche altro componenti riutilizza la mia vista personalizzata in vari punti dell'attività e, naturalmente, è possibile riutilizzare il file XML . –