2017-08-05 2 views
0

Ich habe eine Tätigkeit mit Schublade Layout.Wie schließe ich zuerst die Schublade und dann OnbackPressed?

Ich möchte überprüfen, ob die Schublade geschlossen ist oder nicht, dann onBackPressed nennen. Wenn die Schublade geöffnet ist, sollte sie zuerst geschlossen werden, dann sollte onBackPressed aufgerufen werden.

Ich habe versucht, wie dies mit addDrawerListener

public class MainActivity extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     setUpUI(); 

     listeners(
    } 

    public void setUpUI() { 
     toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 

     //Initializing NavigationView 
     navigationView = (NavigationView) findViewById(R.id.navigation_view); 

     drawerLayout = (DrawerLayout) findViewById(R.id.drawer); 
    } 

    public void listeners() 
     drawerLayout.addDrawerListener(new DrawerLayout.DrawerListener() { 
      @Override 
      public void onDrawerSlide(View drawerView, float slideOffset) { 

      } 

      @Override 
      public void onDrawerOpened(View drawerView) { 

      } 

      @Override 
      public void onDrawerClosed(View drawerView) { 
       onBackPressed(); 
      } 

      @Override 
      public void onDrawerStateChanged(int newState) { 

      } 
     }); 

    } 

    @Override 
    public void onBackPressed() 
     drawerLayout.closeDrawer(Gravity.END); 
     if (!mBackPressCancelled) { 
      if (getFragmentManager().getBackStackEntryCount() > 0) { 
       getFragmentManager().popBackStackImmediate(); 
      } else { 
       super.onBackPressed(); 
      } 
     } 
    } 

} 

Mit dieser Schublade nahe kommt eine halbe App geschlossen wird zu tun. Ich möchte die Lade den Call onBaackPressed schließen.

Wie kann ich das tun? Bitte helfen Sie. Vielen Dank.

+0

posten Sie Ihre Fehler logcat –

+0

ich keine Störung erhalte @ RahulKhurana – Sid

Antwort

4

Sie können prüfen, ob Schublade geschlossen ist oder nicht mit

if(mDrawerLayout.isDrawerOpen(GravityCompat.END)) { //drawer is open }else{ super.onBackPressed(); }

+0

Damit schließt sich die Schubfachschublade an BackPressed nicht nach dem Schließen der Schublade angerufen werden. – Sid

+0

Sie können, wenn Schublade geöffnet Anruf drawerLayout.closeDrawer (Gravity.END); –

+0

Ich habe das getan. aber es schließt nur Schublade – Sid

2

Dies wird Ihr Code sein.

@Override 
public void onBackPressed() { 
    if(mDrawerLayout.isDrawerOpen(GravityCompat.END)) { 
     mDrawerLayout.closeDrawer(GravityCompat.END) 
    } else { 
     super.onBackPressed(); 
    } 
} 
+0

onBackPressed dies schließt gerade die Schublade onBackPressed nicht nach dem Schließen der Schublade aufgerufen Dosis. – Sid

+0

Beim ersten Drücken der Taste wird die Schublade geschlossen. dann geht das zweite Mal App nach hinten. –

Verwandte Themen