-2
Override
public void onBackPressed(){
  if(drawer.isDrawerOpen(GravityCompat.START)){
      drawer.closeDrawer(GravityCompat.START);
  }else {
      super.onBackPressed();
  }
}

I have a nav drawer with some items and fragments. When I click on an Item, obviously open a fragment, but how to when any fragment is open backbutton backs to mainactivity layout?

3 Answers3

0

If you are defining the back button inside the fragment and handling using a fragment class. You can use this :

@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {

if (keyCode == KeyEvent.KEYCODE_BACK) {
    // do something
    return true;  // return true if back handled, false otherwise
}

return super.onKeyUp(keyCode, event);
}
Ishtdeep Hora
  • 310
  • 2
  • 4
0

You can also try this in your MainActivity itself:

@Override
 public void onBackPressed() {
     if(getFragmentManager().getBackStackEntryCount() > 0) {
         getFragmentManager().popBackStack();
     } else if(drawer.isDrawerOpen(GravityCompat.START)){
         drawer.closeDrawer(GravityCompat.START);
     } else {
         super.onBackPressed(); 
     } 
 }
heethjain21
  • 130
  • 1
  • 9
0

you have to manually maintain all fragment in mainActivity Backpressed(), you can find which fragment is open now using this senior you can replace main fragment on backButton.

Mayur Dabhi
  • 3,607
  • 2
  • 14
  • 25