2016-03-23 1 views
1

Dans mon application, j'ai une activité avec des onglets utilisés pour gérer 6 fragments. J'ai quelques fragments dans lesquels je dois créer des vues par programme en fonction de certaines données que je télécharge depuis un webservice. Comment puis-je sauvegarder les vues que j'ai créées par programme et les restituer dans le résumé des fragments sans avoir besoin de les recréer à chaque fois?Enregistrer la vue créée par programme pour un fragment et restaurer dans onresume

Répondre

0

Vous devez utiliser modèle singleton pour vos fragments.

A singleton en Java est une classe pour laquelle une seule instance peut être créée fournit un point d'accès global de cette instance. Le modèle singleton décrit comment cela peut être archivé.

Par exemple:

public class YourFragment extends Fragment { 
     private static YourFragment uniqInstance; 

     private YourFragment() { 
     } 

     public static YourFragment getInstance() { 
     if (uniqInstance == null) { 
      uniqInstance = new YourFragment(); 
     } 
     return uniqInstance; 
     } 
     ......... 
} 

Lorsque vous souhaitez accéder à votre fragment devrait appeler:

YourFragment.getInstance(); 

Si vous souhaitez accéder à la méthode dans votre fragment doit appeler:

YourFragment.getInstance().yourMethod(); 

Bien sûr, la méthode à laquelle vous accédez doit être déclarée publique.

J'espère que ça aide!

+1

Merci pour votre réponse, c'est utile dans certains cas mais ce n'est pas la solution optimale dans mon cas. Je n'appelais déjà la création du fragment qu'une seule fois. Pendant que j'attendais des réponses, j'avais trouvé une solution par moi-même. J'avais fait de la vue racine du fragment une variable du fragment lui-même et chaque fois que OnCreateView est appelé, je gonfle seulement la vue si la vue est nulle, sinon elle renvoie la même vue que j'avais créée précédemment. Maintenant, le problème est de mettre à jour les vues lorsque je détecte la mise à jour des données à partir du webservice – Marcel