【发布时间】:2014-06-25 12:18:10
【问题描述】:
我正在尝试将ActionBar Tabs 绑定到ViewPager。一开始我为ActionBar Tabs 和ViewPager 创建了两个独立的项目,它们运行良好。当尝试相互绑定时,根据下面的代码,ViewPager 符合TabListener,换句话说,当我触摸ActionBar Tab 时,ViewPager 会相应更改并显示相应的View .例如,我有三个Tabs,当触摸第二个Tab时,ViewPager会显示相应的第二页。等等。
但是ActionBar Tabs不服从ViewPager,换句话说,当滑动屏幕移动到ViewPager的下一页时,ViewPager显示各自的View但@987654338 @ 不会根据当前ViewPager 的选定View 更改其当前选定状态。例如,当滑动到第三个 ViewPage 时,ViewPager 显示其尊敬的第三个 View,但是,当前选择的 ActionBar Tab 不会更改为第三个。我可以访问ViewPage 三个,而突出显示的Tab 是第一。
我希望我清楚地解释了这个问题。
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();
}
}
【问题讨论】:
标签: android android-fragments tabs android-actionbar android-viewpager