正常情况下按下back会直接跳出webView这个activity。
目标:用户在按下back键的时候返回web的上一层,而不是退出web。
思路:拦截手指点击back这个事件。
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KEYCODE_BACK)&&webView.canGoBack()){
webView.goBack();
return true;
}
return super.onKeyDown(keyCode,event);
}
onKeyDown这个方法是用来监听手指在屏幕上的按键,如果用户按下back,并且webView可以go back的话就消费用户点击的back,如果不能消费,就还传递到上层去。
扩展:双击back退出应用
long preTime;
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
long currentTime = new Date().getTime();
// 如果时间间隔大于2秒,不处理
if ((currentTime - preTime) > 2000) {
// 显示消息
Toast.makeText(this, "再按一次退出程序!", Toast.LENGTH_SHORT).show();
//更新时间
preTime = currentTime;
//截获事件,不再处理
return true;
}
}
System.exit(0);// 正常退出程序
return super.onKeyDown(keyCode, event);
}
网友评论