Autore Topic: Rotazione schermo  (Letto 269 volte)

Offline tonno16

  • Utente storico
  • *****
  • Post: 1228
  • Respect: +59
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Rotazione schermo
« il: 13 Giugno 2016, 17:42:36 CEST »
0
Ho un' Activity che contiene un solo Fragment. Però le variabili nell' Activity sono tante e cmolto complesse. Non posso pensare di salvarmi interi o stringhe in "OnSavedIstance()". Come faccio per non ricreare l'Activity?
Ho provato a mettere "orientation" in  "android:configChanges", e infatti la rotazioen non distrugge niente. Poi in OnConfigurationChanged chiamo:
- setContentView(R.layout.main) se portrait
- setContentView(R.layout.main_land) se landscape.

Il tutto si tramuta in una schermata bianca

Offline Ezio1400

  • Nuovo arrivato
  • *
  • Post: 6
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    Windows 10'
Re:Rotazione schermo
« Risposta #1 il: 23 Giugno 2016, 23:05:49 CEST »
0
Ti serve evitare la distruzione dell'activity e/o del fragment? Perchè se vuoi evitare la distruzione del solo fragment se non sbaglio ti può aiutare il metodo setRetainInstance(true) 

Offline Ohmnibus

  • Utente senior
  • ****
  • Post: 716
  • Respect: +151
    • Github
    • Google+
    • @ohmnibus
    • Mostra profilo
    • Lords of Knowledge GdR
  • Dispositivo Android:
    Huawei P9 Lite
  • Play Store ID:
    Ohmnibus
  • Sistema operativo:
    Windows 7 x64
Re:Rotazione schermo
« Risposta #2 il: 24 Giugno 2016, 00:17:09 CEST »
0
Citazione
Però le variabili nell' Activity sono tante e cmolto complesse. Non posso pensare di salvarmi interi o stringhe in "OnSavedIstance()".

...e questa è la ragione per cui non si dovrebbero usare molte variabili nelle Activity.

Hai pensato di creare una classe-contenitore serializzabile? Nell'activity mantieni il riferimento ad un'istanza di quella classe, che a sua volta mantiene tutte le variabili di cui hai bisogno. In OnSavedIstance, poi, devi salvare solo quella classe.

Comunque, come dice Ezio1400, è possibile mantenere lo stato dei fragment:

https://developer.android.com/guide/topics/resources/runtime-changes.html#RetainingAnObject

Ohmnibus
Le mie app su Play Store

È stata trovata una soluzione al tuo problema? Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato.