2014-11-22 4 views
7

Ich habe eine Navigationsschublade (appcompat v7) in meiner App, die einwandfrei funktioniert.Android DrawerLayout.setDrawerLockMode() funktioniert nicht

Jetzt möchte ich es deaktivieren, bis der Benutzer einen In-App-Kauf kauft, um zusätzliche Funktionen freizuschalten. Also in meinem Activity.onCreate(), nachdem die Schublade zu initialisieren und bevölkern sie, ich rufe diese Funktion:

mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED); 

Diese Funktion nichts tut. Die Schublade öffnet und schließt sich weiterhin normal, nachdem Sie auf die Schublade Karat in der Aktionsleiste geklopft haben. Ich habe versucht, diese Funktion in Activity.onResume() ohne Unterschied aufzurufen.

Wie kann diese Funktion richtig verwendet werden? (Ich habe versucht, online nach Antworten zu suchen, konnte aber nichts finden, was mein Problem anspricht). Jede Hilfe wird geschätzt, da ich seit einiger Zeit an diesem Problem festhalte.

Antwort

5

mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);

ist das Deaktivieren nur das Layout Öffnung Schublade durch Streichen, bis Sie Navigationsleiste Symbol klicken halten eine boolesche Variable

Schreib mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED); in onStart() und auch unter Codezeilen

@Override 
    public boolean onOptionsItemSelected(android.view.MenuItem item) { 

     if(!disabled) 
     { 
     if (item.getItemId() == android.R.id.home) { 

      if (mDrawerLayout.isDrawerOpen(mDrawerLinearLayout)) { 
       mDrawerLayout.closeDrawer(mDrawerLinearLayout); 
      } else { 
       mDrawerLayout.openDrawer(mDrawerLinearLayout); 
      } 
     } 
     } 
     return super.onOptionsItemSelected(item); 
    } 
schreiben

das wird sicher funktionieren

+0

zu nennen, wo Sie diesen Code denken Sie gehen würde? – rgamber

+0

'onOptionsItemSelected' wird aufgerufen, wenn ein Element aus dem Überlaufmenü ausgewählt ist, nicht wenn ein Element aus dem Navigationsfach ausgewählt ist. – rgamber

+0

Deshalb schrieb ich item.getItemId() == android.R.id.home es wird auch aufgerufen, wenn Home-Taste auf Navigation Schublade geklickt –

3

Wenn Sie 0 anrufenarretiert es öffnende und schließende Schublade nur durch Swipes.

Die Schublade wird weiterhin normal geöffnet und geschlossen, nachdem Sie auf die Schublade Karat in der Aktionsleiste geklickt haben, da Ihre Schublade weiterhin auf Anrufe reagiert, obwohl eine Schublade gesperrt ist. Sie müssen in Ihrem Aktionsleisten-Menübutton Listener Logik hinzufügen und openDrawer (int) nicht aufrufen, wenn Sie nicht möchten, dass er geöffnet wird.

Btw, ist es in Ordnung, setDrawerLockMode(int) in onСreate