Je sais « que cette affaire est froid », mais parce que je trouvé ce fil d'abord, quand je cherchais exactement la même chose (et trouvé une réponse maintenant):
Imaginez Bundle comme un fichier XML. Si vous créez un nouveau <BUNDLE name="InstanceName" type="ClassName">
, vous pouvez ajouter librement des éléments et des attributs dans un espace de noms nouveau et vide.
Lorsque onSaveInstance(Bundle outState)
de votre MainActivity est appelée (vous pouvez aussi forcer cela en), vous pouvez créer une nouvelle: Bundle b = new Bundle();
Ensuite, appelez votre (probablement pas hérité et non surchargée) méthode personnalisée onSaveInstance(Bundle b)
dans votre propre classe avec votre Bundle nouvellement créé b. ensuite (en onSaveInstance(Bundle outState)
) de votre MainActivity, appelez outState.putBundle("StringClassAndInstanceName", b);
Lorsque vous trouvez cette chaîne dans onCreate, vous pouvez utiliser un commutateur/cas pour recréer cet objet ou (mieux) ont une fonction d'usine dans votre classe personnalisée pour travailler avec Bundle et "StringClassAndInstanceName".
Je trouve qu'il y a moins de travail à traduire dans et à partir de JSON, par rapport à – Arcantos
onSaveInstanceState devrait être à la fin de la fonction! https://developer.android.com/training/basics/activity-lifecycle/recreating.html –
Bien que ce soit la bonne façon d'enregistrer l'objet personnalisé dans onSaveInstanceState(), vous devez vous assurer que vous n'enregistrez pas de gros objets en utilisant cette méthode . C'est juste pour sauvegarder l'état de l'écran. Si les objets deviennent volumineux, il y a une chance que vous obteniez l'exception 'TransactionTooLargeException' – abat