我的原代码:
public class CourseFragment extends Fragment {
public static final String ARG_POSITION_NUMBER = "course_number";
private int position;
public CourseFragment() {
// Empty constructor required for fragment subclasses
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView;
position = getArguments().getInt("position");
String course = getResources().getStringArray(
R.array.array_navigation_drawer)[position];
getActivity().setTitle(course);
rootView = inflater.inflate(R.layout.activity_drawer_fragment,
container, false);
return rootView;
}// end onCreateView
@Override
public void onStart() {
super.onStart();
ViewPager mViewPager = (ViewPager) getActivity().findViewById(
R.id.pagerYear);
Log.i("posit", String.valueOf(position));
switch (position) {
case 0:
InfoTechPageAdapter infoTechPageAdapter = new InfoTechPageAdapter(
getActivity().getSupportFragmentManager());
mViewPager.setAdapter(infoTechPageAdapter);
break;
case 1:
ComSciPageAdapter comSciPageAdapter = new ComSciPageAdapter(
getActivity().getSupportFragmentManager());
mViewPager.setAdapter(comSciPageAdapter);
break;
case 2:
ProfilePageAdapter profilePageAdapter = new ProfilePageAdapter(
getActivity().getSupportFragmentManager());
mViewPager.setAdapter(profilePageAdapter);
break;
}
}// end onStart
}
出现的问题:
Caused by: java.lang.IllegalStateException: Observer android.support.v4.view.ViewPager$PagerObserver@431a27a0 was not registered.
解决办法:
方法一:
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
将
getActivity().getSupportFragmentManager()
改为:
getChildFragmentManager()
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
方法二:
I was having this problem even though I was 100%
sure that I was using the correct FragmentManager
. I solved it by doing a null check when initializing the ViewPager's adapter
.
if(pager.getAdapter() == null)
pager.setAdapter(pagerAdapter);