在Webview中使用“后退”按钮时遇到问题。
我不确定我应该在代码的哪个部分放置onKeyDown()
部分(当前属于最后@Override
)
mywebview.canGoBack()
和mywebview.goBack()
都会导致错误,说“mywebview无法解析”。
如果我将mywebview.setWebClient(...)
后的括号移到底部,mywebview-error
会消失,但override
,onKeyDown
,return true
和return super
会导致各种错误。
谁能告诉我该怎么做?
代码:
package com.sib;
import android.os.Bundle;
import android.app.Activity;
import android.view.KeyEvent;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
public class SiB extends Activity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.sib);
WebView mywebview = (WebView) findViewById(R.id.webview);
mywebview.loadUrl("url");
WebSettings webSettings = mywebview.getSettings();
webSettings.setJavaScriptEnabled(true);
mywebview.setWebViewClient(new WebViewClient());
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK) && mywebview.canGoBack()) {
mywebview.goBack();
return true;
}
return super.onKeyDown(keyCode, event);
}
}
答案 0 :(得分:3)
使mywebview
成为一个类实例变量。
public class SiB extends Activity {
WebView mywebview;
然后确保不要通过取出onCreate()
中的声明来遮蔽它。它应该是这样的:
mywebview = (WebView) findViewById(R.id.webview);
mywebview.loadUrl("url");
基于what I can find,Gabe是对的。用于背压的onKeyDown()
仅适用于API 4及更低版本。 onBackPressed()
应该适用于比API 4更新的每一个。
@Override
public void onBackPressed(){
if (mywebview.canGoBack()) {
mywebview.goBack();
return;
}
super.onBackPressed();
}
答案 1 :(得分:2)
onKeyDown不起作用。你需要覆盖onBackPressed。