我試圖將ActionBar Tabs
綁定到ViewPager
。在開始時,我爲ActionBar Tabs
和ViewPager
創建了兩個單獨的項目,並且它們工作正常。當試圖相互綁定時,根據下面的代碼,ViewPager
遵守TabListener
,換句話說,當我觸摸ActionBar Tab
ViewPager
相應地改變並顯示相應的View
。例如,我有三個Tabs
,當觸摸第二個號碼Tab
時,ViewPager
顯示相應的第二個頁碼。等等。將ActionBar選項卡綁定到ViewPager
但ActionBar Tabs
不服從ViewPager
,在其他意義,刷卡時屏幕移動到ViewPager
下一個頁面,該ViewPager
展示了各自的View
但ActionBar Tab
沒有根據改變其當前的選中狀態當前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();
}
}
謝謝我一直在嘗試2周,真的發現這個監聽器在教程中提到。現在它工作 – user2121
很高興它現在爲你工作。 – user3331142