一般我们都会这样设置,代码如下:
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;
}
});