7

Ich benutze DrawerLayout mit ViewPagerIndicator, aber die letzte wird nicht korrekt mit der DrawerLayout arbeiten. Sobald ich die Anwendung öffne, wird der Viewpager korrekt angezeigt, aber sobald ich Fragmente in der DrawerLayout ändere, verschwinden die Fragmente des ViewPagers.ViewPager Fragmente verschwinden

Hier ist mein FragmentManager:

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

Das zweite Fragment und vierte in dem ViewPager ist und sie nicht verschwinden, während die erste, dritte und fünfte verschwinden. Was ist falsch in meinem Code?

Hier ist mein Fragment:

@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; 
    } 

} 

Antwort

15

Verwenden getChildFragmentManager() mit dem GoogleMusicAdapter:

adapter = new GoogleMusicAdapter(getChildFragmentManager()); 

, weil die von der ViewPager verwendeten Fragmente sind verschachtelte Fragmente.

+1

keine solche Methode ... –

+0

@KingOmar Stellen Sie sicher, dass Sie die neueste Version der Support-Bibliothek in Ihrem Projekt haben. – Luksprog

+0

yeap ich googelte das und nur überprüft. Ich habe die neueste Version der Support-Bibliothek. –

Verwandte Themen