2014-09-28 13 views
26

Ich habe eine Anwendung mit Navigation Schublade, die Liste der Standorte bietet. In der Schublade gibt es mehrere Optionen (z. B. Land, Stadt usw.), die der Benutzer einrichten kann, bevor er die entsprechende Liste in der Hauptaktivität anzeigt.Android auf Schublade geschlossen Listener

Gibt es eine Möglichkeit, die Liste zu aktualisieren, wenn der Benutzer die Schublade schließt, oder gibt es eine andere Möglichkeit, dies zu lösen? Ich habe versucht, nach Tutorials zu suchen, habe aber nichts über diesen geschlossenen Listener gefunden. Irgendwelche Vorschläge wären hilfreich, danke!

Antwort

63

Wenn Sie Setup die ActionBarDrawerToggle Sie können "implementieren" die onDrawerClosed und onDrawerOpened Rückrufe. Siehe das folgende Beispiel aus dem Docs:

mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, 
      R.drawable.ic_drawer, R.string.drawer_open, R.string.drawer_close) { 

     /** Called when a drawer has settled in a completely closed state. */ 
     public void onDrawerClosed(View view) { 
      super.onDrawerClosed(view); 
      // Do whatever you want here 
     } 

     /** Called when a drawer has settled in a completely open state. */ 
     public void onDrawerOpened(View drawerView) { 
      super.onDrawerOpened(drawerView); 
      // Do whatever you want here 
     } 
    }; 
// Set the drawer toggle as the DrawerListener 
mDrawerLayout.addDrawerListener(mDrawerToggle); 

Edit: Jetzt ist der setDrawerListener veraltet, verwenden Sie addDrawerListener statt.

+0

OMG, ich habe diese komplett vergessen! Danke für das Erinnern! – rendyhihi

30

ReVerse Antwort ist richtig, wenn Sie auch ActionBar verwenden. im Fall, dass Sie nur den DrawerLayout direkt, können Sie einen DrawerListener, um es hinzuzufügen:

View drawerView = findViewById(R.id.drawer_layout); 
if (drawerView != null && drawerView instanceof DrawerLayout) { 
    mDrawer = (DrawerLayout)drawerView; 
    mDrawer.setDrawerListener(new DrawerListener() { 
      @Override 
      public void onDrawerSlide(View view, float v) { 

      } 

      @Override 
      public void onDrawerOpened(View view) { 

      } 

      @Override 
      public void onDrawerClosed(View view) { 
       // your refresh code can be called from here 
      } 

      @Override 
      public void onDrawerStateChanged(int i) { 

      } 
     }); 
} 

Per kit's comment, addDrawerListener() verwenden jetzt werden soll, dass setDrawerListener() ist veraltet.

+8

Wenn jemand dies sieht, ist 'setDrawerListener' veraltet. 'addDrawerListener' sollte jetzt verwendet werden – kit