Quelque chose de bizarre se passe ici, j'ai créé une application flux rss avec pager vue quand je vais à 2ème onglet de l'1er onglet, le contenu de 3ème onglet arrivent à 2ème tab. Quand je vais à l'1er onglet de 2ème onglet, le contenu de 1er onglet arrivent à 2ème onglet. quelque chose mélangeant sans aucune logique (ou je ne pouvais pas trouver la logique), pourquoi ça se passe ..? est-il possible de dégager l'onglet en cours avant d'aller à l'onglet suivant? (ne savent pas que ce soit la bonne question que je devais demander)activité Android Tabbed duplication onglets
Voici mon code
public class datafragment extends Fragment {
View view;
ViewPager viewPager;
TabLayout tabLayout;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
view= inflater.inflate(R.layout.sample,container,false);
viewPager = (ViewPager) view.findViewById(R.id.viewpager);
viewPager.setAdapter(new sliderAdapter(getChildFragmentManager()));
tabLayout = (TabLayout) view.findViewById(R.id.sliding_tabs);
tabLayout.post(new Runnable() {
@Override
public void run() {
tabLayout.setupWithViewPager(viewPager);
}
});
return view;
}
private class sliderAdapter extends FragmentPagerAdapter{
final String tabs[]={"tab1", "tab2","tab3"};
public sliderAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
Fragment fragment= null;
switch (position){
case 0:
fragment = new RssFragment();
break;
case 1:
fragment = new RssFragment1();
break;
case 2:
fragment = new RssFragment2();
break;
}
return fragment;
}
@Override
public int getCount() {
return 3;
}
@Override
public CharSequence getPageTitle(int position) {
return tabs[position];
}
}
}
après avoir ajouté la réponse
public class datafragment extends Fragment {
View view;
ViewPager viewPager;
TabLayout tabLayout;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
view= inflater.inflate(R.layout.sample,container,false);
viewPager = (ViewPager) view.findViewById(R.id.viewpager);
viewPager.setAdapter(new SliderAdapter(getChildFragmentManager()));
tabLayout = (TabLayout) view.findViewById(R.id.sliding_tabs);
// tabLayout.post(new Runnable() {
// @Override
// public void run() {
// tabLayout.setupWithViewPager(viewPager);
// }
// });
**setupViewPager(viewPager);**
return view;
}
private void setupViewPager(ViewPager viewPagerProfile)
{
SliderAdapter adapter = new SliderAdapter (getActivity().getSupportFragmentManager());
adapter.addFragment(new RssFragment(), "tab1");
adapter.addFragment(new RssFragment1(), "tab2");
adapter.addFragment(new RssFragment2(), "tab3");
viewPagerProfile.setAdapter(adapter);
}
public class SliderAdapter extends FragmentPagerAdapter
{
private final List<Fragment> mFragmentList = new ArrayList<>();
private final List<String> mFragmentTitleList = new ArrayList<>();
public SliderAdapter (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 null;
}
}
}
S'il vous plaît ajouter votre fichier xml –
S'il vous plaît se référer à la question @AyushKhare –
Avec votre capture d'écran, beaucoup de choses sont devenues plus claires. Vous voudrez peut-être jeter un oeil à ce https://stackoverflow.com/questions/37315602/weird-tab-behavior-whats-wrong-with-the-adapter –