1

Fragment 클래스에서 ViewPager를 사용하고 있습니다. 각 ViewPager에는 각 페이지마다 세 페이지가 있습니다. 사용자 정의 목록을 표시합니다. view.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; 
} 
} 

내 문제를 찾을 수 없습니다.이 문제를 해결하는 데 도움을 줄 수있는 사람이 있습니까?

+0

당신이 목록 조각을 사용하려고 했습니까? – playmaker420

+0

@ playmaker420 No. – Yugesh

+0

첫 번째 조각이있는 동안 마지막 조각에서 돌아 오는 동안 비슷한 문제가 발생했습니다. 데이터베이스에서 데이터를 가져 와서 목록보기에 채우는 중이었습니다. – playmaker420

답변

8

사용 getChildFragmentManager() 대신 super.getActivity().getSupportFragmentManager()의 당신이 라인에 어댑터를 인스턴스화 :

this.sfadp = new Schedule_fragment_adapter(super.getActivity().getSupportFragmentManager(), fragments); 
+0

고맙습니다. 잘하고 있습니다. 의심이 하나 더 있습니다.이 뷰 호출기를 스 와이프하면됩니다. 조금 느 렸습니다. 어떻게 개선 할 수 있습니까? – Yugesh

+0

@Yugesh 레이아웃을 개선하거나 (보기 수가 적고 뷰 계층 구조가 얕은 경우) 또는 'ViewPager'에서 사용되는 조각에서 무거운 초기화를 수행하지 않는지 확인하십시오. 당신이 게시 한 코드에서 뭔가 문제가있는 것이 무엇인지 분명하지 않습니다. – Luksprog

관련 문제