0

Le tiroir Android ouvert ne fonctionne qu'une seule fois. J'ai essayé plusieurs approches. Mon code:Le tiroir Android ouvert ne fonctionne qu'une fois.

public void openDrawer() { 
     ActionBarDrawerToggle mDrawerToggle = new ActionBarDrawerToggle(this, drawer, R.string.drawer_open, R.string.drawer_close); 
     drawer.setDrawerListener(mDrawerToggle); 
     mDrawerToggle.syncState(); 
     if(drawer.isDrawerOpen(GravityCompat.START)) { 
      drawer.closeDrawers(); 
     } else { 
      drawer.openDrawer(GravityCompat.START); 
     } 
    } 

et approche 2:

public void openDrawer() { 
    if(drawer.isDrawerOpen(GravityCompat.START)) { 
     drawer.closeDrawers(); 
    } else { 
     drawer.openDrawer(GravityCompat.START); 
    } 
} 

Dans les deux cas ne fonctionne que la première fois qu'il est ouvert et fermé.

EDIT Le problème est que j'appelle la méthode du présentateur. Cela fonctionne si je le lie à OnClickListener dans Activité. Je suppose que j'aurai besoin de quelque chose comme preventDefault.

Répondre

1

Essayez de cette façon, cela fonctionne pour moi dans de nombreux cas.

EDIT: Ajoutez cette partie à votre méthode onCreate(). Et n'appelle qu'une seule fois.

ActionBarDrawerToggle mDrawerToggle = new ActionBarDrawerToggle(this, drawer, R.string.drawer_open, R.string.drawer_close); 
    drawer.setDrawerListener(mDrawerToggle); 
    mDrawerToggle.syncState(); 

puis de définir un écouteur de clic sur votre bouton personnalisé.

customButton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       if (drawer.isDrawerOpen(navigationView)) { 
        closeDrawer(); 
       } else { 
        openDrawer(); 
       } 
      } 
     }); 

Ce sont des méthodes auxiliaires

public void openDrawer() { 
    drawer.openDrawer(GravityCompat.START); 
} 

public void closeDrawer() { 
    drawer.closeDrawer(GravityCompat.START); 
} 
+0

S'il vous plaît, vous pouvez modifier la réponse – TeodorKolev

+0

@TeodorKolev vous utilisez la barre d'outils à droite? –

+0

Aucun bouton personnalisé – TeodorKolev