2017-09-05 12 views
0

tout d'abord j'ai essayé toutes les solutions disponibles mais je ne reçois toujours pas la réponse à cette question. J'ai une activité qui a peu de fragments qui vont peupler un ViewPager, la façon dont je peupler le viewPager est de cette façon.comment enregistrer des données lorsque Fragment est remplacé

fragment = getSupportFragmentManager(); 
     fragment.beginTransaction() 
       .replace(R.id.homepageVp, newFrag) 
       .addToBackStack(null) 
       .commit(); 

suppouse il y a Fragment A et je le remplace par le fragment B en utilisant code ci-dessus, et voici ma question, est-il possible de passer de Fragment A à Fragment B et retourner au fragment A l'aide code ci-dessus mais contenant toujours des données du précédent Remplacer (le premier).

j'ai essayé d'utiliser

@Override 
public void onSaveInstanceState(Bundle outState) { 
    super.onSaveInstanceState(outState); 
    outState.putString(VAR_KEY, jsonResult); 
} 

@Override 
public void onActivityCreated(@Nullable Bundle savedInstanceState) { 
    super.onActivityCreated(savedInstanceState); 
    jsonResult = savedInstanceState.getString(VAR_KEY); 
} 

intérieur Fragment A, ce je crois comprendre que onSaveInstanceState est exécuté pour sauver la variable JsonResult plus tard quand mon activité est créée à nouveau l'onActivityCreated est exécuté et mettre la valeur précédente en jsonResult variable. mais cela n'a pas fonctionné, donc peut-être il y a une erreur (s) que j'ai faite, ou c'est ma compréhension de Fragment LifeCycle qui n'est pas correcte.

+0

pourquoi ne pas vous créer une classe singleton pour stocker les JSON et y accéder où que vous soyez? –

+0

avez-vous essayé onCreateView au lieu de onActivityCreated? – phpdroid

Répondre

0

Si vous ne voulez pas recréer fragment dans viewPager vient de mettre offscreenPageLimit dans votre viewPager comme ceci:

viewPager.setOffscreenPageLimit(/*Total no of fragments*/);