在我的包含WebView的活动中,我重写了onBackPressed()方法,这是我的代码。
@Override
public void onBackPressed() {
if(mWebView.canGoBack()){
Log.d("DEBUG","canGoBack");
mWebView.goBack();
return;
}
super.onBackPressed();
}
字符串" canGoBack"如果有历史页面,则打印,但活动没有变化。这是我在onCreate()方法中调用的初始化WebView代码。
private void initWebViewSettings() {
mWebView.setWebViewClient(new MyWebViewClient());
WebSettings webSettings = mWebView.getSettings();
webSettings.setCacheMode(WebSettings.LOAD_NO_CACHE); //no cache
webSettings.setJavaScriptEnabled(true);
webSettings.setCacheMode(WebSettings.LOAD_NO_CACHE);
mWebView.addJavascriptInterface(new WebAppInterface(this), "Android");
}
这是我的onResume()方法,我调用了loadUrl()。
@Override
protected void onResume() {
super.onResume();
mShopId = getIntent().getIntExtra(App.SHOP_ID,-1);
if(mShopId != -1){
mWebView.loadUrl(App.SHOP_URL + mShopId + App.INDEX);
}
}
答案 0 :(得分:0)
这是我解决这个问题的方法。我为许多webview项目做了同样的事情
webView.setOnKeyListener(new OnKeyListener()
{
@Override
public boolean onKey(View v, int keyCode, KeyEvent event)
{
if(event.getAction() == KeyEvent.ACTION_DOWN)
{
WebView webView = (WebView) v;
switch(keyCode)
{
case KeyEvent.KEYCODE_BACK:
if(webView.canGoBack())
{
webView.goBack();
return true;
}
break;
}
}
return false;
}
});
答案 1 :(得分:0)
尝试我的解决方案,按下按键
返回旧链接public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == event.KEYCODE_BACK && webView.canGoBack()){
webView.goBack();
return false;
}
return super.onKeyDown(keyCode, event);