ActionBar, Fragment e rotazione dello schermo

Nell’articolo Tab Layout in Android con ActionBar e Fragment come fatto notare da dnoray in un suo commento, c’è un problema: quando si ruota lo schermo (ctrl + F11 nell’emulatore) si verifica una sovrapposizione dei due fragment come si vede in figura.

fragment issue

Per un ulteriore discussione sull’argomento puoi leggere questo.

Ci sono almeno tre possibili soluzioni, o una qualche variante di queste

  • primo metodo
    aggiungi questa riga al file AndroidManifest.xml

    in questo modo l’activity non è distrutta e ricreata ed eventualmente puoi aggiornare l’activity sovrascrivendo il metodo onConfigurationChanged() ma in questo caso non è necessario.
    Per altre informazioni vedi Handling the Configuration Change Yourself
  • secondo metodo
    nella classe TabActionBarActivity sostituisci la riga 66

    con

    Come spiegato qui il metodo replace è essenzialmente un remove + add.
  • terzo metodo
    più complesso ma interessante

    1. per prima cosa, hai bisogno di sapere quali sono i fragment che sono stati aggiunti all’attività principale; quindi aggiungi il seguente codice alla classe TabActionBarActivity:

      questo codice è tratto da Is there a way to get references for all currently active fragments in an Activity?
    2. modifica il metodo onTabSelected della classe interna TabListener

Una risposta a “ActionBar, Fragment e rotazione dello schermo”

  1. Thank you so much, the third method work well and solved my problem.
    But it’s possibile to have the last tab selected after screen rotation?

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.