0

NOte: J'ai implémenté les onglets avec ViewPager. Je crée une application qui a trois onglets (Fragments) dans un viewpager. Je veux créer un tiroir de navigation où je peux voir ces trois onglets et en cliquant sur n'importe qui me dirige vers l'onglet correspondant.Navigation Tiroir avec View Pager avec les onglets ne fonctionnant pas

Activité principale étend ActionBarActivity et a le code suivant

private class DrawerItemClickListener implements ListView.OnItemClickListener { 
    @Override 
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 

Fragment fragment = new CategoryFragment(); 
    Bundle args = new Bundle(); 
    args.putInt(CategoryFragment.CATEGORY_NUMBER, position); 
    fragment.setArguments(args); 

    FragmentTransaction transaction =  getSupportFragmentManager().beginTransaction(); 

    transaction.replace(R.id.pager, fragment); 
    transaction.addToBackStack(null); 
    transaction.commit(); 
    getSupportFragmentManager().executePendingTransactions(); 

    // update selected item and title, then close the drawer 
    mDrawerList.setItemChecked(position, true); 
    setTitle(mOptionsNavDrawer[position]); 
    mDrawerLayout.closeDrawer(mDrawerList); 

}

CategoryFragment ressemble à ce

public static class CategoryFragment extends android.support.v4.app.Fragment { 
    public static final String CATEGORY_NUMBER = "category_number"; 

    public CategoryFragment() { 
     // Empty constructor required for fragment subclasses 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     int fragmentNumber = getArguments().getInt(CATEGORY_NUMBER); 
     View rootView=null; 
     if(fragmentNumber==0) 
     { 
      rootView = inflater.inflate(R.layout.F1, container, false); 
     } 
     else if (fragmentNumber==1) 
     { 
      rootView = inflater.inflate(R.layout.F2, container, false); 
     } 
     else if(fragmentNumber==2) 
     { 
      rootView = inflater.inflate(R.layout.F3, container, false); 
     } 
     else 
     { 
      rootView = inflater.inflate(R.layout.F4, container, false); 
     } 
     return rootView; 
    } 


} 

fonction OnCreateView à l'intérieur CategoryFragment est obtenir appelé mais les fragments (F1. F2 F3) ne sont pas réglés. Existe-t-il une autre méthode pour invoquer ces fragments? Chacun de ces fragments sont les onglets respectifs.

+0

double possible de [Comment mettre en œuvre les onglets de téléavertisseur de vue avec le panneau de navigation dans le fragment android?] (http://stackoverflow.com/questions/26117686/how-to-implement-the-view-pager-tabs-with-navigation-drawer-in-android-fragment) –

+0

Aucun d'entre eux ne fait usage de ViewPager –

Répondre

0

Dans votre activité, vous avez besoin d'une méthode permettant de basculer entre les onglets. Quelque chose comme:

public void displayView(int position) { 

    // update the main content by replacing fragments 
    Fragment fragment = null; 
    switch (position) { 
     case 0: 
      fragment = new FragmentA();    
      break; 
     case 1: 
      fragment = new FragmentB(); 

      break; 
     case 2: 
      fragment = new FragmentC(); 

      break; 

     default: 
      break; 
    } 

    if (fragment != null) { 
     FragmentTransaction transaction = fragmentManager.beginTransaction(); 
     transaction.addToBackStack(null); 
     transaction.replace(R.id.frame_container, fragment); 
     transaction.commit(); 

Chaque fragment doit être indépendant de l'autre, pas besoin de passer l'info paquet à CategoryFragment

+0

J'ai supprimé le CategoryFragment et implémenté et displayView comme vous l'avez suggéré. Après cela, il ne change pas non plus les onglets et n'affiche qu'une page blanche :( –

+0

@AnmolSrivastava avez-vous toujours ce problème? –