Ho provato a utilizzare onRetainNonConfigurationInstance (restituendo WebView ), quindi a recuperarlo con getLastNonConfigurationInstance durante onCreate e a riassegnarlo.
Non sembra funzionare ancora. Non posso fare a meno di pensare che sono davvero vicino però! Finora ho solo uno sfondo bianco / bianco WebView . Pubblicare qui nella speranza che qualcuno possa aiutare a spingere questo oltre il traguardo.
Forse non dovrei passare WebView . Forse un oggetto dall'interno WebView ?
L'altro metodo che ho provato, non il mio preferito, è quello di impostare questo nell'attività:
android:configChanges="keyboardHidden|orientation"
... e quindi non fare praticamente nulla qui:
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
// We do nothing here. We're only handling this to keep orientation
// or keyboard hiding from causing the WebView activity to restart.
}
Funziona, ma potrebbe non essere considerato una buona pratica .
Nel frattempo, ho anche un unico ImageView che voglio aggiornare automagicamente a seconda della rotazione. Questo risulta essere molto semplice. Sotto la mia res
cartella, ho drawable-land
e drawable-port
per contenere le variazioni orizzontale / verticale, quindi uso R.drawable.myimagename
per l'origine di ImageView e Android "fa la cosa giusta" - yay!
... tranne quando osservi le modifiche alla configurazione, quindi non è così. :(
Quindi sono in contrasto. Usa onRetainNonConfigurationInstance e la rotazione di ImageView funziona, ma la persistenza di WebView non ... o usa onConfigurationChanged e WebView rimane stabile, ma il ImageView non si aggiorna. Cosa fare?
Un'ultima nota: nel mio caso, forzare l'orientamento non è un compromesso accettabile. Vogliamo davvero supportare con garbo la rotazione. Piace molto come fa l'app Browser Android! ;)