2015-04-20 4 views
4

У меня есть деятельность с навигационным ящиком. Ниже мой код.Как проверить, открыт ли ящик навигации?

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

     if (keyCode == KeyEvent.KEYCODE_BACK) { 
      if(dLayout.isDrawerOpen(GravityCompat.START)==true) { 
       dLayout.closeDrawers(); 
       } 

      else 
      { 
      doExit(); 
      } 
     } 

     return super.onKeyDown(keyCode, event); 
    } 

    private void doExit() { 

     AlertDialog.Builder alertDialog = new AlertDialog.Builder(
       FirstSelection.this); 

     alertDialog.setPositiveButton("Yes", new OnClickListener() { 

      @Override 
      public void onClick(DialogInterface dialog, int which) { 
       finish(); 
      } 
     }); 

В соответствии с этим кодом, когда пользователь нажимает кнопку назад, навигация выдвижной ящик закрыт, если он открыт, иначе метод doExit(); называется. Но в моем случае условие else работает нормально, но когда я нажимаю кнопку «Назад», когда ящик открыт, приложение полностью закрывается. Я придерживался этого кода How to detect if navigation drawer is open?

Любая помощь была бы оценена.

ответ

8

DrawerLayout имеет метод isDrawerOpen(listView) возвращает истину или ложь, это поможет вам, я думаю,

if (mDrawerLayout.isDrawerOpen(mDrawerList)) { 
      mDrawerLayout.closeDrawer(mDrawerList); 
     } 

Добавить выше код внутри onBackPressed

+0

** если (dLayout.isDrawerOpen (DList) == TRUE) { \t \t \t \t dLayout.closeDrawers(); \t \t \t} ** использовал это, все тот же вопрос – Popsta

+0

это влияет на методKeyDown() ?? – Popsta

+0

поделитесь своим кодом внутри oncreate, связанным с ящиком, или сравните его с образцом кода ящика. Я думаю, вы делаете что-то не так – apk

Смежные вопросы