我有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”中。
因为你没有在你的"{ }"
中使用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;
}
而不是将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
重定向回溯历史记录。