7

Tôi đang sử dụng DrawerLayout với ViewPagerIndicator, tuy nhiên phần cuối cùng sẽ không hoạt động chính xác với DrawerLayout. Khi tôi mở ứng dụng, viewpager được hiển thị một cách chính xác nhưng một khi tôi thay đổi các mảnh trong DrawerLayout, các mảnh của ViewPager sẽ biến mất.Các mảnh vỡ của ViewPager biến mất

Dưới đây là FragmentManager tôi:

FragmentManager fragmentManager = getSupportFragmentManager(); 
switch (arg2) { 
    case 0: 
     contentFragment = new Lebanon(); 
     break; 
} 
fragmentManager.beginTransaction() 
     .replace(R.id.content_frame, contentFragment).commit(); 

Đoạn thứ hai và thứ tư trong ViewPager đang có và họ không biến mất, khi là người đầu tiên, thứ ba và thứ năm biến mất. Có gì sai trong mã của tôi?

Dưới đây là Fragment tôi:

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 
    viewta = inflater.inflate(R.layout.simple_tabs, container, false); 
    SamsungLB = com.androidarabia.lebanon.SamsungLB.newInstance(); 
    HTCLB = com.androidarabia.lebanon.HTCLB.newInstance(); 
    LGLB = com.androidarabia.lebanon.LGLB.newInstance(); 
    SonyLB = com.androidarabia.lebanon.SonyLB.newInstance(); 
    SearchLB = com.androidarabia.lebanon.SearchLB.newInstance(); 
    this.getSherlockActivity().getSupportActionBar() 
      .setHomeButtonEnabled(true); 
    prefs = this.getSherlockActivity().getSharedPreferences(prefName, 
      Context.MODE_PRIVATE); 
    adapter = new GoogleMusicAdapter(this.getSherlockActivity() 
      .getSupportFragmentManager()); 
    pager = (ViewPager) viewta.findViewById(R.id.pager); 

    pager.setPageTransformer(true, new ZoomOutPageTransformer()); 
    indicator = (TabPageIndicator) viewta.findViewById(R.id.indicator); 
    pager.setCurrentItem(0); 
    pager.setAdapter(adapter); 
    pager.setOffscreenPageLimit(4); 
    indicator.setViewPager(pager); 
    return viewta; 
} 

private void addtabs(ViewPager pager2) { 
    // TODO Auto-generated method stub 
    pager2.setAdapter(adapter); 
    pager2.setOffscreenPageLimit(4); 
    indicator.setViewPager(pager); 
} 

class GoogleMusicAdapter extends FragmentStatePagerAdapter { 

    public GoogleMusicAdapter(FragmentManager fm) { 
     super(fm); 
     notifyDataSetChanged(); 
    } 

    @Override 
    public Fragment getItem(int position) { 

     switch (position) { 
     case 0: 
      return SamsungLB; 
     case 1: 
      return HTCLB; 
     case 2: 
      return LGLB; 
     case 3: 
      return SonyLB; 
     case 4: 
      return SearchLB; 

     } 
     notifyDataSetChanged(); 

     return TestFragment.newInstance(CONTENT[position % CONTENT.length]); 
    } 

    @Override 
    public CharSequence getPageTitle(int position) { 

     return CONTENT[position % CONTENT.length].toUpperCase(); 
    } 

    @Override 
    public int getCount() { 

     return CONTENT.length; 
    } 

} 

Trả lời

15

Sử dụng getChildFragmentManager() với GoogleMusicAdapter:

adapter = new GoogleMusicAdapter(getChildFragmentManager()); 

vì các mảnh vỡ được sử dụng bởi ViewPagerlồng nhau mảnh.

+1

không có phương pháp như vậy ... –

+0

@KingOmar Đảm bảo bạn có phiên bản thư viện hỗ trợ mới nhất trong dự án của mình. – Luksprog

+0

yeap tôi googled đó và chỉ cần kiểm tra. tôi có phiên bản mới nhất của thư viện hỗ trợ. –