1.使用FragmentPagerAdapter后viewpage的fragement内容不显示
注意:适配器继承FragmentPagerAdapter后 不需要实现isViewFromObject和instantiateItem方法,写了会出现各种问题,我这里就是多写了
isViewFromObject方法。
PagerAdapter与FragmentPagerAdapter区别:
PagerAdapter:
viewpager(可左右滑动的页面集)的专用布局方法,需要覆盖
instantiateItem、
isViewFromObject
这几个方法。
FragmentPagerAdapter:
FragmentPagerAdapter继承
viewpager,内部封装了
instantiateItem
,需要覆盖
getItem
方法向
instantiateItem
传递数据。
private PagerAdapter mPagerAdapter = new PagerAdapter() {
public int getCount() {
return mTitles.length;
}
public boolean isViewFromObject(View view, Object object) {
return view == object;
}
public Object instantiateItem(ViewGroup container, int position) {
TextView textView = new TextView(MainActivity.this);
textView.setText(mTitles[position]);
textView.setGravity(Gravity.CENTER);
container.addView(textView);
return textView;
}
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((View)object);
}
public CharSequence getPageTitle(int position) {
return mTitles[position];
}
};
public class MainAdaoter extends FragmentPagerAdapter {
private static final int FRAGMENT_HOME = 0;
private static final int FRAGMENT_APP = 1;
private static final int FRAGMENT_GAME = 2;
private static final int FRAGMENT_SUBJECT = 3;
private static final int FRAGMENT_RECOMMEND = 4;
private static final int FRAGMENT_CATEGORY = 5;
private static final int FRAGMENT_HOT = 6;
private final String[] mTiltle;
public MainAdaoter(FragmentManager fm, String[] titles) {
super(fm);
mTiltle=titles;
}
public Fragment getItem(int position) {
switch (position) {
case FRAGMENT_HOME: return new HomeFragment();
case FRAGMENT_APP: return new ApplicationFragment();
case FRAGMENT_GAME: return new GameFragment();
case FRAGMENT_SUBJECT: return new SubjectFragment();
case FRAGMENT_RECOMMEND: return new RecommendFragment();
case FRAGMENT_CATEGORY: return new CategoryFragment();
case FRAGMENT_HOT: return new HotFragment();
}
return null;
}
public int getCount() {
return mTiltle.length;
}
// @Override
// public boolean isViewFromObject(View view, Object object) {
// return view==object;
// }
public CharSequence getPageTitle(int position) {
return mTiltle[position];
}
}