Autore Topic: Salvare correttamente lo stato dei fragment  (Letto 421 volte)

Offline pietroconti89

  • Utente normale
  • ***
  • Post: 165
  • Respect: +19
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Note 3 N9005
  • Sistema operativo:
    Windows / Mac OSX
Salvare correttamente lo stato dei fragment
« il: 19 Dicembre 2017, 18:59:11 CET »
0
Salve a tutti mi trovo nella situazione di dover gestire diversi fragment e ho necessità che vengano correttamente salvate le istanze, mi spiego meglio ,
io ho la mia MainActivity con menu NavigationDrawer e il container per i fragment , il menu è composto da 4 sezioni che eseguono il replace del container in base a dove navigo quindi ho
Fragment1
Fragment2
Fragment3
Fragment4

, la prima opzione mi porta in Fragment1 , mi fa poi andare in Fragment1 - 2 e poi Fragment1 - 3
quindi fa diversi salti eseguendo il replace del container , quando eseguo il commit mettendo anche il .addToBackStack(null) cosi da poter tornare indietro ,  e su ogni fragment ho impostato il setRetainInstance(true) per far si che se l'app passa in onPause poi venga mantenuta la view , ora penso che questa soluzione sia molto forzata , esiste quindi un modo per mantenere sicuramente il backstack, ma soprattutto che se mi ritrovo in Fragment1 - 3  e l' app passa in onPause e poi viene riaperta mi mantenga che mi trovo in quella posizione con la View inizializzata dai miei dati " dati che prendo da DB Remoto " e con tutto il backstack , quindi esattamente la condizione che avevo prima che l' appa andasse in onPause

Diciamo sono in cerca di un approccio più pulito, anche perchè sembra che il setRetainInstance(true) non sia fedelissimo

Saluti

Offline iClaude

  • Utente normale
  • ***
  • Post: 325
  • Respect: +27
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S8
  • Sistema operativo:
    Windows 10
Re:Salvare correttamente lo stato dei fragment
« Risposta #1 il: 21 Dicembre 2017, 12:43:59 CET »
0
setRetainedInstance serve per conservare il Fragment quando l'Activity viene ricreata (ad es. x cambio configurazione, rotazione display).
x onPause e onStop lo stato dell'Activity viene mantenuto in automatico dal SO, per cui non capisco bene la tua domanda, a meno che tu non abbia messo del codice in onStart/onResume