Actualiser fragment lorsque le changement entre les onglets
Application ouverte sur le premier fragment et il y a 2 onglets je souhaite actualiser la deuxième fragment
quand je bouge, mais je ne veux pas d'actualisation premier fragment
MainActivity
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
viewPager = (ViewPager) findViewById(R.id.viewpager);
setupViewPager(viewPager);
tabLayout = (TabLayout) findViewById(R.id.tabs);
tabLayout.setupWithViewPager(viewPager);
}
private void setupViewPager(ViewPager viewPager) {
ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());
adapter.addFragment(new Main_Button(), "Main");
adapter.addFragment(new TwoFragment(), "Main2");
viewPager.setAdapter(adapter);
}
class ViewPagerAdapter extends FragmentPagerAdapter {
private final List<Fragment> mFragmentList = new ArrayList<>();
private final List<String> mFragmentTitleList = new ArrayList<>();
public ViewPagerAdapter(FragmentManager manager) {
super(manager);
}
@Override
public Fragment getItem(int position) {
return mFragmentList.get(position);
}
@Override
public int getCount() {
return mFragmentList.size();
}
public void addFragment(Fragment fragment, String title) {
mFragmentList.add(fragment);
mFragmentTitleList.add(title);
}
@Override
public CharSequence getPageTitle(int position) {
return mFragmentTitleList.get(position);
}
}
veuillez expliquer votre réponse car je suis nouveau sur android et je ne sais pas comment je peux le faire
OriginalL'auteur fekra | 2017-01-14
Vous devez vous connecter pour publier un commentaire.
Lorsqu'un
Fragment
est rendu visible (c'est à dire, la page sélectionnée dans votreViewPager
), son setUserVisibleHint() méthode est appelée. Vous pouvez remplacer cette méthode dans votreTwoFragment
et de l'utiliser pour déclencher une actualisation.excellent exemple Merci
Cette méthode fonctionne bien, sauf quand je dois par exemple de glisser tablayout et le passage des doigts de l'utilisateur de basculer entre les onglets, il y a un retard à rafraîchir, car il commence à actualiser l'affichage lorsque son complètement balayée à l'autre fragment. J'ai remarqué que, parce que j'ai du cercle de la barre de progression du chargement de l'animation, et ça à l'air stupide quand je la faire glisser. Je dois appuyez sur tablayout onglets et puis il rafraîchit agréablement. Une idée de comment résoudre ce problème? Je pense qu'il a besoin de détruire l'onglet qui est hors de l'écran, puis il charge bien, mais comment?
J'ai essayé d'ajouter
else{ getFragmentManager().beginTransaction().detach(this).commit();
mais quand je balayez vers autre fragment, il est complètement vide pendant une seconde, puis il commencer à dessiner tous les points de vue.... aucune idées de comment le résoudre?OriginalL'auteur ianhanniballake
À l'intérieur de Votre fragment de classe utiliser le code ci-dessous:
oui un peu de ce que im satisfait de ce merci mec
OriginalL'auteur megamind
Essayer Cette
OriginalL'auteur Rahul
Si vous n'avez pas l'esprit rafraîchissant chaque fragment, chaque fois qu'un onglet changements, vous pouvez simplement remplacer le
getItemPosition()
méthode de votre FragmentPagerAdapter et rendre retour toujours la valeurPOSITION_NONE
. Exemple:En faisant cela, vous dites android pour actualiser le fragment chaque fois que l'affichage de radiomessagerie essaie de l'obtenir. Performance sage, il n'est pas la meilleure pratique. Il y a donc un deuxième approche:
Tout d'abord, créer une interface pour être appelée quand votre besoin de rafraîchissement:
Ensuite, apportez vos fragments d'implémenter cette interface:
Si votre souhaitent vraiment pas mise à jour de votre premier fragment, ne rien faire dans son
update()
méthode.Troisième, remplacer la
getItemPosition
méthode et appelupdate()
. Ce sera appelée à chaque fois qu'un fragment est sélectionné:La plupart de ce code est venu de cette réponse.
OriginalL'auteur BMacedo