2014-07-14 54 views
-1

默認情況下,當抽屜正在顯示並且您按下BackButton時,它會自動關閉。 但我希望當它顯示和用戶點擊BackButton,關閉應用程序。 我嘗試了這些解決方案,但沒有奏效:Android,抽屜顯示時處於onBackPressed

Navigation drawer, handling the back button to go to previous fragments

Backbutton press from android navigation drawer

+0

有一個布爾檢查導航抽屜處於_onBackPressed(打開)_ –

+0

我做到了,但它不檢查如果條款是抽屜打開的話。 –

回答

0

第一個覆蓋回壓你的活動,然後可以檢查是否打開抽屜

mDrawerLayout.isDrawerOpen(GravityCompat.START); 

如果這個回報真正關閉你的應用程序。

重要:檢查您的抽屜重力。

嘗試註冊你片段回壓是這樣的:

public void registerBackButton() 
{ 
    if (getView() != null) 
    { 
     getView().setFocusableInTouchMode(true); 
     getView().requestFocus(); 
     final BaseFragment frag = this; 
     getView().setOnKeyListener(new OnKeyListener() 
     { 
      @Override 
      public boolean onKey(View v, int keyCode, KeyEvent event) 
      { 
       if (event.getAction() != KeyEvent.ACTION_DOWN) 
       { 
        if (keyCode == KeyEvent.KEYCODE_BACK) 
        { 
         if (isVisible()) 
         { 
          return frag.onFragmentBackPressed(); 
         } 
        } 
       } 

       return false; 
      } 
     }); 
    } 
} 

現在onFragmentBackPressed檢查,如果抽屜被打開或如上所述沒有。

+0

當抽屜打開時,它不檢查是否有子句。 –

+0

你的意思是說onBackPressed不叫? –

+0

是的! 檢查自己買 –

0

onBackPressed將不會在抽屜打開時被調用,或者讓您說如果您的鍵盤已打開,您的後退鍵也會變爲向下箭頭。所以當你按下這個鍵時你的鍵盤會隱藏起來,而你的onBackPressed將不會被調用。

當您再次按下後退按鈕時,您的應用程序將會關閉。鍵盤也是如此。

因此,首先關上抽屜,然後再次按後退按鈕,然後你的應用程序將完成