Short Story:auditeur ViewPage tiré après la création du fragment
Comment détecter un défilement page ViewPager
/modification avant l'exécution du cycle de vie de fragment pour la nouvelle page?
longue histoire:
J'ai un ViewPager
avec des fragments attribués à afficher à l'aide ViewPagerAdapter
, l'un de ces fragments est destiné à être affiché avec des données différentes selon la page active sélectionnée dans le pager.
par exemple, si la page en cours est sélectionné il afficher A données, et si la page en cours est sélectionné il va afficher B données. La solution directe consiste à définir les données en fonction de la page en cours en utilisant OnPageChangeListener
ou SimpleOnPageChangeListener
, mais les deux ne sont pas applicables car le cycle de vie du fragment WHOLE est appelé avant l'appel de l'une de ces méthodes auditeurs, de sorte que les données seraient être défini après la création de fragments ici.
la deuxième solution directe est de faire les changements après avoir reçu l'appel des auditeurs qui est si mauvais en ce qui concerne l'expérience de l'utilisateur et la conception sage.
Alors serait le meilleur moyen de définir les informations d'identification des fragments lors du changement de la page en cours de ViewPager
avant la méthode onResume()
du fragment à exécuter?
Ce que je fais:
dans MyFragment.java:
// it goes here first
@Override
public void onResume() {
super.onResume();
// check the Data Applied
if(dataA)
doSomething();
else
doSomethingElse();
}
dans MainActivity.java:
pager.addOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
@Override
public void onPageSelected(int position) {
// then it goes here
// setting the Data of the fragment
if (position == 2)
setDataA();
else (position == 4)
setDataB();
}
});
quels seraient les critères d'utiliser, comme je l'ai dit que je besoin de dire lors du défilement d'une nouvelle page du 'ViewPager'. –
attendre. Je mettrai à jour ma réponse –
Voir ma mise à jour. maintenant vous obtiendrez le callback avant le fragment créé. passez votre identification unique pour identifier le fragment attaché. –