我有app,一个Activity,点击按钮布局后,活动会随着片段布局而变化,在布局中我只有WEBVIEW。然后加载所有可点击的网址页面然后我点击后退按钮它进入活动,而不是上一页。这是为什么?
myWebView.setOnKeyListener(new View.OnKeyListener(){
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK
&& event.getAction() == MotionEvent.ACTION_UP) {
Log.d(Constants.TAG_FRAGMENT,"ACTION_UP");
if(myWebView.canGoBack())
Log.d(Constants.TAG_FRAGMENT,"goBack");
myWebView.goBack();
return true;
}
return false;
}
});
为什么CanGoBack不起作用?仅在日志节目" ACTION_UP"。
答案 0 :(得分:1)
因为您在"{ }"
if condition
个大括号
if (keyCode == KeyEvent.KEYCODE_BACK
&& event.getAction() == MotionEvent.ACTION_UP) {
Log.d(Constants.TAG_FRAGMENT,"ACTION_UP");
if(myWebView.canGoBack()){
Log.d(Constants.TAG_FRAGMENT,"goBack");
myWebView.goBack();
}
return true;
}
答案 1 :(得分:0)
您可以使用KeyListener
WebView
功能,而不是将Activity's
分配给OnKeyDown
,而不是:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
Log.d(Constants.TAG_FRAGMENT,"ACTION_UP");
if(myWebView.canGoBack()){
Log.d(Constants.TAG_FRAGMENT,"goBack");
myWebView.goBack();
return true;
} else {
return super.onKeyDown(keyCode, event);
}
} else {
return super.onKeyDown(keyCode, event);
}
}
修改强>
来自Docs,
当且仅当此WebView具有后退历史记录时,canGoBack才返回true 项目
因此,请确保您有webview
重定向的正确回溯历史记录。