2017-09-29 1 views
0

Je suis donc un peu confus quant à la façon d'enregistrer l'interface utilisateur actuelle d'un fragment quand disons, par exemple, je navigue vers une autre application et revient à mon application. J'ai un fragment où vous pouvez ajouter dynamiquement des vues sur le clic d'un bouton, aussi bien qu'un temporisateur qui peut ou peut ne pas être actif, selon l'utilisateur. Les vues ajoutées dynamiquement peuvent ou non être supprimées en fonction de l'utilisateur. Fondamentalement, je veux enregistrer toutes les vues qui sont actuellement sur l'écran, ainsi que le compte à rebours et l'heure actuelle à chaque fois que je navigue en dehors de mon application, ce que je suppose est lorsque onStop() est appelé. Comment ferais-je cela? Je suis un peu confus quant à la procédure d'enregistrement et à la façon dont je restaurerais mes données.Fragment restauration de l'interface utilisateur dynamique onStop()

Répondre

0

Dépend de ce que vous devez sauvegarder. Parlons-nous des index, des ints, des objets entiers ou des images, etc.

Votre question est un peu vague, mais il existe plusieurs façons de stocker des données. La première chose à retenir est que, cependant, l'interface utilisateur regardé quand vous revenez sera à quoi il ressemble encore. Si vous perdez votre interface utilisateur au retour, vous faites probablement quelque chose de mal. Désormais, si vous revenez après la destruction de l'application ou si aucun indicateur d'historique n'a été défini pour éviter qu'elle conserve l'interface utilisateur ou la récupération de place, vous récupérerez votre espace mémoire et supprimerez votre application, puis passerez à onPause et onStop. onDestroy.

Vous pouvez choisir d'enregistrer vos données dans sharedPref (si elle est pas sécurisé) Vous pouvez choisir d'enregistrer vos données dans SecureSharedPref (fichier personnalisé, encrypte, mais pas caché système de fichiers) Vous pouvez choisir d'enregistrer votre données dans la base de données SQLite, vous aurez besoin de l'implémentation SQLOpenHelper. Ou si vous retournez à l'application pendant qu'il est encore en vie, vous pouvez utiliser, sauf en paquet pour restaurer dans onCreate comme

@Override 
public void onSaveInstanceState(Bundle outState) { 
    outState.putString(MY_KEY, mMyvalue); 

    // call superclass to save any view hierarchy 
    super.onSaveInstanceState(outState); 
} 

Ceci est restauré dans le paquet de onCreate donc vous devez voir si les clés existent dans le bundle renvoyé lors de l'appel onCreate suivant. Cependant, cela ne persiste pas entre les sessions détruites, cela ne persiste que tant que votre application n'a pas été effacée de la mémoire. Aussi, pour l'utiliser, vous devez utiliser des objets parcables qui sont sérialisables. Tout ce que vous avez à faire est de le mettre en œuvre et vous êtes prêt à partir.

+0

Pour clarifier, les vues que j'ajoute dynamiquement contiennent des edittexts qui saisissent du texte/nombre en entrée. J'ai donc besoin de sauvegarder ces textes/chiffres. Cependant, l'utilisateur peut appuyer sur un bouton qui réduira ces nombres ou lancera une minuterie (le minuteur est affiché comme ints dans un edittext). Lorsque l'utilisateur a fini de gonfler un nombre x de vues, il doit sauvegarder, ce qui sauvegardera toutes les vues créées dans une base de données sqlite. Le problème que j'ai est d'obtenir l'interface utilisateur actuelle à restaurer puisque les données de vue seront constamment changer. –

+0

De plus, l'interface utilisateur actuelle se rétablit si je maintiens le bouton d'accueil enfoncé et que je change d'application à partir de là. Cependant, si j'appuie sur la maison et que je change d'application, elle disparaît. –

+0

Donc, juste stocker une liste de valeurs. Vous pouvez y mettre un tableau sérialisable entier ou vous pouvez faire une boucle et stocker une clé/valeur pour chaque élément de la liste avec un itérateur. En ce qui concerne la restauration, ne définissez-vous aucun indicateur d'historique dans votre manifeste. Assurez-vous que vous n'avez aucun ensemble d'indicateurs d'intention que vous ne reconnaissez pas dans votre manifeste. – Sam