聲明
歡迎轉載,但請保留文章原始出處:)
博客園:http://www.cnblogs.com
農民伯伯: http://over140.cnblogs.com
正文
由於沒有找到嵌套FragmentActivity的方法,只好打算用不同的FragmentPagerAdapter來動態切換ViewPager的,如下:
/**
* 首頁切換的三個界面
*/
private FragmentPagerAdapter mPagerAdapter1 = new FragmentPagerAdapter(getSupportFragmentManager()) {
@Override
public Fragment getItem( final int position) {
switch (position) {
case 1:
return new Fragment1();
case 2:
return new Fragment2();
default:
return new Fragment3();
}
}
@Override
public int getCount() {
return 3;
}
};
private FragmentPagerAdapter mPagerAdapter2 = new FragmentPagerAdapter(getSupportFragmentManager()) {
@Override
public Fragment getItem( final int position) {
switch (position) {
case 1:
return new Fragment4();
case 2:
return new Fragment5();
default:
return new Fragment6();
}
}
@Override
public int getCount() {
return 3;
}
};
* 首頁切換的三個界面
*/
private FragmentPagerAdapter mPagerAdapter1 = new FragmentPagerAdapter(getSupportFragmentManager()) {
@Override
public Fragment getItem( final int position) {
switch (position) {
case 1:
return new Fragment1();
case 2:
return new Fragment2();
default:
return new Fragment3();
}
}
@Override
public int getCount() {
return 3;
}
};
private FragmentPagerAdapter mPagerAdapter2 = new FragmentPagerAdapter(getSupportFragmentManager()) {
@Override
public Fragment getItem( final int position) {
switch (position) {
case 1:
return new Fragment4();
case 2:
return new Fragment5();
default:
return new Fragment6();
}
}
@Override
public int getCount() {
return 3;
}
};
然后很自然的想用ViewPager的setAdapter動態設置來切換, 結果發現不起作用!!莫有辦法,只好先把Fragment清理一下,如下:
public
void switchViewPages(FragmentPagerAdapter mAdapter,
int[] tabs) {
if (mViewPager.getAdapter() != null) {
FragmentManager fm = getSupportFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
Bundle bundle = new Bundle();
int index = mViewPager.getAdapter().getCount();
String key = "index";
while (index >= 0) {
bundle.putInt(key, index);
ft.remove(fm.getFragment(bundle, key));
index--;
}
ft.commit();
}
mViewPager.setAdapter(mAdapter);
if (mViewPager.getAdapter() != null) {
FragmentManager fm = getSupportFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
Bundle bundle = new Bundle();
int index = mViewPager.getAdapter().getCount();
String key = "index";
while (index >= 0) {
bundle.putInt(key, index);
ft.remove(fm.getFragment(bundle, key));
index--;
}
ft.commit();
}
mViewPager.setAdapter(mAdapter);
查看了一下FragmentManager的源碼,學會了getFragmen的用法,這個方法方便通過索引取Fragment。