[英]ViewPager in fragment Class is not working properly
我在Fragment类中使用ViewPager.ViewPager每页有三个页面,显示自定义列表视图.ViewPager有时会正确显示列表视图,有时会显示空白页面。
使用ViewPager的片段类
public class Schedule extends Fragment{
RelativeLayout schedule_lay;
Schedule_fragment_adapter sfadp;
ViewPager pager;
TitlePageIndicator tpi;
PagerTabStrip pts;
@Override
public View onCreateView(LayoutInflater inflater,final ViewGroup container, Bundle savedInstanceState) {
if (container == null) {
return null;
}
schedule_lay = (RelativeLayout) inflater.inflate(R.layout.schedule, container, false);
pager = (ViewPager) schedule_lay.findViewById(R.id.viewpager);
pts = (PagerTabStrip)schedule_lay.findViewById(R.id.page_title_indicator);
pts.setDrawFullUnderline(false);
pts.setTextSize(TypedValue.COMPLEX_UNIT_SP, 22);
pts.setTabIndicatorColor(Color.parseColor("#ff3824"));
initialisePaging();
return schedule_lay;
}
private void initialisePaging() {
List<Fragment> fragments = new Vector<Fragment>();
fragments.add(Fragment.instantiate(getActivity(), Ongoing.class.getName()));
fragments.add(Fragment.instantiate(getActivity(), Upcoming.class.getName()));
fragments.add(Fragment.instantiate(getActivity(), Recent.class.getName()));
this.sfadp = new Schedule_fragment_adapter(super.getActivity().getSupportFragmentManager(), fragments);
pager.setAdapter(this.sfadp);
}
}
FragmentPagerAdapter
public class Schedule_fragment_adapter extends FragmentPagerAdapter {
private final List<Fragment> fragments;
/**
* @param fm
* @param fragments
*/
public Schedule_fragment_adapter(FragmentManager fm,
List<Fragment> fragments) {
super(fm);
this.fragments = fragments;
}
@Override
public Fragment getItem(int position) {
return this.fragments.get(position);
}
@Override
public int getCount() {
return this.fragments.size();
}
@Override
public CharSequence getPageTitle(int position) {
switch (position) {
case 0:
return "Ongoing";
case 1:
return "Upcoming";
case 2:
return "Recent";
}
return null;
}
}
自定义列表视图类 (我的所有三个自定义列表类均如下类)
public class Ongoing extends Fragment{
RelativeLayout ongoing_lay;
ListView ongoing_matches_lv;
ArrayList<Item> ongoing_matches = new ArrayList<Item>();
@Override
public View onCreateView(LayoutInflater inflater,final ViewGroup container, Bundle savedInstanceState) {
if (container == null) {
return null;
}
ongoing_lay = (RelativeLayout) inflater.inflate(R.layout.ongoing, container, false);
return ongoing_lay;
}
}
无法找到我的问题。任何人都可以帮助我解决此问题。
super.getActivity().getSupportFragmentManager()
实例化适配器时,请使用getChildFragmentManager()
而不是super.getActivity().getSupportFragmentManager()
:
this.sfadp = new Schedule_fragment_adapter(super.getActivity().getSupportFragmentManager(), fragments);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.