Mi interessa il modo migliore per avere una singola attività che passi da un frammento all'altro.Il modo migliore per passare da un frammento all'altro
Ho letto probabilmente 15 post di Stack Overflow e 5 post di blog su come eseguire questa operazione, e, mentre penso di aver messo insieme una soluzione, non sono convinto che sia la migliore. Quindi, voglio sentire le opinioni delle persone sul modo corretto di gestirle, specialmente per quanto riguarda il ciclo di vita dell'attività dei genitori e dei frammenti.
Ecco la situazione nel dettaglio:
- Un'attività genitore che può visualizzare uno dei due possibili frammenti.
- I due frammenti dichiarano che mi piacerebbe persistere in una sessione, ma non necessariamente deve essere persistente tra una sessione e l'altra.
- Un numero di altre attività, in modo tale che l'attività principale e i frammenti potrebbero essere sepolti nello stack posteriore e distrutti a causa della memoria insufficiente.
- Voglio la possibilità di usare il pulsante Indietro per spostarsi tra i frammenti (Quindi, a quanto ho capito, non posso usare setRetainInstance).
Oltre ai consigli generali architettura, ho il seguente questioni in sospeso:
- Se l'attività genitore viene distrutto a causa della scarsa memoria, come faccio a garantire che gli stati di entrambi i frammenti saranno conservate , come da questo post: When a Fragment is replaced and put in the back stack (or removed) does it stay in memory?. Ho solo bisogno di un puntatore a ciascun frammento dell'attività genitore?
- Qual è il modo migliore per l'attività padre di tenere traccia di quale frammento è attualmente visualizzato?
Grazie in anticipo!
Grazie per la risposta. Non penso di poter utilizzare un visualizzatore di immagini qui, perché le viste non dovrebbero essere trascinate. Io sicuramente implementerò parcelable però. Dove posso implementare suBackPressed? – GLee
OnBackPressed è un metodo di un'attività. Quindi dovrai scavalcarlo lì. –