public class FragmentFactory {
private static BaseFragment fragment;
private static Map<Integer,BaseFragment> mFragmentMap = new HashMap<>();
public static BaseFragment createFragment(int pos){
// BaseFragment fragment = mFragmentMap.get(pos);
if(fragment == null) {
switch (pos) {
case 0:
fragment = new HomeFragment();
break;
case 1:
fragment = new AppFragment();
break;
case 2:
fragment = new GameFragment();
break;
case 3:
fragment = new SubjectFragment();
break;
case 4:
fragment = new RecommendFragment();
break;
case 5:
fragment = new CategoryFragment();
break;
case 6:
fragment = new HotFragment();
break;
default:
break;
}
mFragmentMap.put(pos,fragment);
}
return fragment;
}
}
1.java.lang.IllegalStateException: Can't change tag of fragment HomeFragment
这里因为返回的fragment和adapter所需要的fragment不一致所致,第二次需要AppFragment,却返回了HomeFragment,把注释打开就好了.
2.java.lang.NullPointerException: Attempt to write to field 'android.support.v4.app.FragmentManagerImpl android.support.v4.app.Fragment.mFragmentManager' on a null object reference
这里是因为在getItem中返回引用是一个空值造成的