从名字就可以看出,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);






更多推荐