2013-09-10 4 views
3

J'écris une application qui a un Navigation Drawer et utilise des fragments imbriqués. Le tiroir de navigation est créé à peu près selon les docs Android - cela fonctionne. Je veux que le tiroir de navigation soit toujours visible, c'est pourquoi j'ai une activité avec, et j'échange juste des fragments. L'un des fragments est un ViewPager, qui à son tour a ses propres fragments en tant que pages.Tiroir de navigation avec des fragments imbriqués (ViewPager)

La navigation est hiérarchique comme ceci:

- Home 
- Fragment 1 
-- Subfragment 1.1 
-- Subfragment 1.2 
-- Subfragment 1.3 
- Fragment 2 
-- Subfragment 2.1 
-- Subfragment 2.2 
-- Subfragment 2.3 

où Fragment est un ViewPager, et ses pages sont sous-fragments. Tout fonctionne correctement quand je vais juste à Fragment du tiroir, mais je ne sais pas comment passer directement à une page donnée ViewPager's (fragment imbriqué).

MainActivity avec manipulation tiroir de navigation clique:

@Override 
protected void onNavItemSelected(int id) { 
    switch ((int)id) { 
     case 1: 
      getSupportFragmentManager().beginTransaction() 
      .replace(R.id.content_frame, new MainFragment()) 
      .addToBackStack(null).commit(); 
      break; 
     case 100: 
      getSupportFragmentManager().beginTransaction() 
      .replace(R.id.content_frame, new Fragment1()) 
      .addToBackStack(null).commit(); 
      break; 
     case 200: 
      getSupportFragmentManager().beginTransaction() 
      .replace(R.id.content_frame, new Fragment2()) 
      .addToBackStack(null).commit(); 
      break; 
     . 
     . 
     . 
    }  
} 

Je suppose que cela doit être quelque chose avec getChildFragmentManager() et ViewPager'ssetCurrentItem(), mais je ne peux pas obtenir le premier dans mon activité principale (ou ne savent pas comment) et je ne peux pas utiliser le second parce que le pager est pas encore créé si je fais quelque chose comme ceci:

SubFragment11 a = new SubFragment11(); 
getSupportFragmentManager().beginTransaction().replace(R.id.content_frame, a).addToBackStack(null).commit(); 
a.setCurrentPagerItem(2); 

Répondre

0

Fournir le fragment ViewPager avec un paquet avec une variable pour contrôler l'élément sélectionné. Lorsque le Viewpager est créé, obtenez cet entier et passez à ce panneau.

Questions connexes