2017-10-12 27 views
-1

Je dois passer à l'onglet suivant lorsqu'un bouton est cliqué à partir d'un fragment enfant.Comment sélectionner l'onglet suivant du fragment enfant

Voilà comment je les onglets de configuration dans parent,

TabAdapter adapter; 

private void setUpTabs(ViewPager viewPager) { 

    adapter = new TabAdapter(getSupportFragmentManager()); 
    adapter.addFragment(new FirstTabFragment(), "First Tab"); 
    adapter.addFragment(new SecondTabFragment(), "Second Tab"); 
    viewPager.setAdapter(adapter); 

} 

Et ma classe TabAdapter est,

public class TabAdapter extends FragmentPagerAdapter { 
    private final List<Fragment> mFragmentList = new ArrayList<>(); 
    private final List<String> mFragmentTitleList = new ArrayList<>(); 

    public TabAdapter(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); 
    } 
} 

J'ai créé une méthode pour passer onglet à l'intérieur Parent

TabLayout myTabs= (TabLayout) findViewById(R.id.my_tabs); 

Button chkBtn = (Button) findViewById(R.id.check_button); 

chkBtn.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View view) { 
     viewPager.setCurrentItem(1); 
    } 
}); 

Commutation les onglets à l'intérieur de la classe parent fonctionne bien. Mais comment pourrais-je faire la même chose à l'intérieur FirstTabFragment, S'il vous plaît aidez-moi.

Répondre

1

Juste pour rendre votre interface utilisateur plus interactive et beau, je vais partager ce que j'ai mis en œuvre. Pour accéder à votre viewPager à partir du fichier java du fragment, déclarez votre viewPager comme ci-dessous dans votre activité parente.

public static ViewPager viewPager; 

Ensuite, dans la méthode onClick ou onClickListener d'un bouton dans le fragment, vous pouvez simplement utiliser.

ParentActivity.viewPager.arrowScroll(View.FOCUS_RIGHT); 

Cela facilitera votre viewpager faire défiler au deuxième fragment, et oui, si vous voulez limiter l'utilisateur de défilement, vous pouvez directement désactiver le défilement de viewPager, lisez here.

Vous pouvez également déplacer le focus à gauche si l'utilisateur veut revenir à FirstFragment par juste

ParentActivity.viewPager.arrowScroll(View.FOCUS_LEFT); 

Et oui, cela fonctionne comme je premier test avant des réponses affichant, silly me.

3

vous devez utiliser setCurrentItem(int item)

Définissez la page sélectionnée. `

exemple de code

chkBtn.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View view) { 
     viewPager.setCurrentItem(2); 
    } 
}); 
+0

Merci! Ça m'a aidé. J'ai fait un montage en question. pouvez-vous s'il vous plaît aider sur ce – ChyperX

+0

@ user8595331 sûr pouvez-vous expliquer plus –

2

Vous devriez appeler

viewPager.setCurrentItem(fragmentIdex);