J'essaye de lier le ActionBar Tabs
à un ViewPager
. Au tout début, j'ai créé deux projets distincts pour ActionBar Tabs
et ViewPager
, et ils fonctionnaient bien. En essayant de lier l'un à l'autre, selon le code ci-dessous, le ViewPager
se conforment au TabListener
, autrement dit, quand je touche un ActionBar Tab
le ViewPager
changent en conséquence et affichent le View
respectif .Pour un exemple, j'ai trois , Lorsque vous touchez le Tab
numéro deux, le ViewPager
affiche le numéro de page respectif deux. etc.Liaison des onglets ActionBar à un ViewPager
Mais le ActionBar Tabs
ne respectent pas les ViewPager
, dans d'autres sens, tout en faisant glisser l'écran pour passer à la page suivante du ViewPager
, le ViewPager
montre le View
mais le ActionBar Tab
respectif ne change pas son état actuel sélectionné en fonction du ViewPager
actuellement sélectionné View
. Par exemple, lorsque vous faites glisser vers le numéro ViewPage
trois, le ViewPager
affiche son View
respecté qui est le numéro trois, MAIS, le ActionBar Tab
actuellement sélectionné ne change pas pour être le numéro trois. Je pourrais accéder à ViewPage
trois tandis que le Tab
en surbrillance est numéro un.
J'espère avoir expliqué clairement le problème.
MainActivity
private ViewPager mViewPager;
private MyTabsPagerAdapter mPagerAdapter;
private ActionBar mActionBar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
List<Fragment> mFragList = new ArrayList<Fragment>();
mFragList.add(new Fragment01());
mFragList.add(new Fragment02());
mFragList.add(new Fragment03());
mViewPager = (ViewPager) findViewById(R.id.pager);
mActionBar = getActionBar();
mActionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
mPagerAdapter = new MyTabsPagerAdapter(getSupportFragmentManager(), mFragList);
mViewPager.setAdapter(mPagerAdapter);
for(int i=0; i<mFragList.size(); i++) {
mActionBar.addTab(mActionBar.newTab().setText("Fragment0"+(i+1)).setTabListener(this));
}
}
@Override
public void onTabReselected(Tab arg0, FragmentTransaction arg1) {
// TODO Auto-generated method stub
}
@Override
public void onTabSelected(Tab arg0, FragmentTransaction arg1) {
// TODO Auto-generated method stub
mViewPager.setCurrentItem(arg0.getPosition());
//mActionBar.setSelectedNavigationItem(arg0.getPosition());
}
@Override
public void onTabUnselected(Tab arg0, FragmentTransaction arg1) {
// TODO Auto-generated method stub
}
}
MyTabsPagerAdapter
public class MyTabsPagerAdapter extends FragmentPagerAdapter {
List<Fragment> mFragList;
public MyTabsPagerAdapter(FragmentManager fm, List<Fragment> mFragList) {
super(fm);
// TODO Auto-generated constructor stub
this.mFragList = mFragList;
}
@Override
public Fragment getItem(int arg0) {
// TODO Auto-generated method stub
return this.mFragList.get(arg0);
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return this.mFragList.size();
}
}
Merci J'ai essayé pendant 2 semaines, et j'ai vraiment trouvé cet auditeur mentionné dans un tutoriel. maintenant ça marche – user2121
Heureux qu'il travaille pour vous maintenant. – user3331142