2017-03-14 32 views
1
relativeLayout.setOnKeyListener(new View.OnKeyListener() { 
      @Override 
      public boolean onKey(View v, int keyCode, KeyEvent event) {     
       if(keyCode == KeyEvent.KEYCODE_BACK) {    
         do....something     
       } 
       return false; 
      } 

}如何處理返回按鈕在自定義視圖中在android中?

此代碼無效。當我按下後退按鈕時,它不顯示任何響應。請任何人幫助我。在此先感謝......

+0

我的意思是硬件按鍵事件(設備後退按鈕)。有沒有辦法處理後退按鈕在自定義視圖中按 – Dev

+0

您可能需要[通過其容器將其委託給自定義視圖,該容器也是自定義視圖](https://github.com/Zhuinden/flow- sample/blob/1.0/src/main/java/com/example/flow/MainActivity.java#L134) – EpicPandaForce

回答

2

你幾乎在那裏,但這是你需要做的事。

relativeLayout.setFocusableInTouchMode(true); 
relativeLayout.requestFocus(); 
relativeLayout.setOnKeyListener(new View.OnKeyListener() { 
    @Override 
    public boolean onKey(View v, int keyCode, KeyEvent event) { 

     if (event.getAction() == KeyEvent.ACTION_UP && keyCode == KeyEvent.KEYCODE_BACK) { 
       if(You have handled the back press in your View){ return true; } 
       return false; 
     } 
    }); 
+0

@Athira,它顯示錯誤'無法在getView中解析方法' – Dev

+0

這意味着您的自定義視圖。我現在編輯了答案,請檢查。 –

+0

它的工作感謝您的幫助 – Dev

0
@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
if (Integer.parseInt(android.os.Build.VERSION.SDK) > 5 
     && keyCode == KeyEvent.KEYCODE_BACK 
     && event.getRepeatCount() == 0) { 
    Log.d("CDA", "onKeyDown Called"); 
    // do stuff on back key press event 
    return true; 
} 
return super.onKeyDown(keyCode, event); 

}

同樣可以使用的onkeyup根據您的需要重寫方法。

+0

你不需要爲這個事件添加任何監聽器,只需在活動中覆蓋此方法 –

+0

我已經使用此代碼,但它不工作 – Dev

相關問題