从名字就可以看出,FragmentStatePagerAdapter就是用Fragment作为ViewPager的view来显示
所以使用方法和ViewPager差不多,但也有区别
总体的思路是,在主布局中有个帧布局FrameLayout用来Fragment替换使用,然后再适当的时机,使用FragmentStatePagerAdapter得到想要的
Fragment来替换FrameLayout就行了
<FrameLayout
android:id="@+id/layout_content"
android:layout_width="match_parent"
android:layout_height="0dip"
android:layout_weight="1.0"
/>
FragmentStatePagerAdapter对象
FragmentStatePagerAdapter fragmentStatePagerAdapter = new FragmentStatePagerAdapter(getSupportFragmentManager()) {
//返回的是fragment对象的个数
@Override
public int getCount() {
return 5;
}
//根据索引去获取fragment对象
@Override
public Fragment getItem(int arg0) {
BaseFragment baseFragment = null;
switch (arg0) {
case 0:
baseFragment = new FunctionFragment();
break;
case 1:
baseFragment = new NewCenterFragment();
break;
case 2:
baseFragment = new SmartServiceFragment();
break;
case 3:
baseFragment = new GovAffairsFragment();
break;
case 4:
baseFragment = new SettingFragment();
break;
}
return baseFragment;
}
};
其中BaseFragment是Fragment的子类,FunctionFragment等是BaseFragment的子类,所以他们都可以替换FrameLayout
得到FarmeLayout,并用Fragment替换FrameLayout
//得到帧布局
private FrameLayout layout_content;
layout_content = (FrameLayout) findViewById(R.id.layout_content);
//从fragmentStatePagerAdapter得到Fragment替换帧布局
//先取出Fragment
//参数:1,fragment需要去替换的帧布局对象2,需要去替换帧布局对应fragment的索引值(传递给getItem的参数)
Fragment fragment = (Fragment) fragmentStatePagerAdapter.instantiateItem(layout_content,index);
//2,替换操作 第三个参数为替换帧布局对应的fragment对象
fragmentStatePagerAdapter.setPrimaryItem(null, 0, fragment);
//3,事物提交
fragmentStatePagerAdapter.finishUpdate(null);
网友评论