一般我們都會這樣設定,代碼如下:
mWebView.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0 ) {
if (mWebView != null && mWebView.canGoBack()) {
mWebView.goBack();
return true;
}
}
return false;
}
});
原因:
setOnKeyListener之是以執行兩次是因為都down和up占用了,解決方法是KeyEvent.getAction()==KeyEvent.ACTION_DOWN或者KeyEvent.getAction()==KeyEvent.ACTION_UP的時候讓他執行return true;而且其他的操作需要擷取getKeyCode()事件,不是getAction()動作;
解決方法:
mWebView.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0 && event.getAction() == KeyEvent.ACTION_DOWN) {
if (mWebView != null && mWebView.canGoBack()) {
mWebView.goBack();
return true;
}
}
return false;
}
});