0

我有一个简单的 webview 来显示一个论坛..我当然需要“映射”后退按钮才能返回论坛的网页。我以这种方式尝试过,但给了我一个致命的错误

public class MainActivity extends Activity
{
protected WebView webview;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    WebView webview = (WebView) findViewById(R.id.webview);
    WebSettings websettings = webview.getSettings();
    websettings.setJavaScriptEnabled(true);
    webview.setWebViewClient(new WebViewClient());
    if (savedInstanceState == null)
    {
        webview.loadUrl("http://www.proboards.com/");
    }

}

@Override
protected void onSavedInstanceState(Bundle outState) {
    //super.onSavedInstanceState(outState);

    webview.saveState(outState);
}

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    switch (keyCode) {
        case KeyEvent.KEYCODE_BACK:
            if(webview.canGoBack() == true)

                webview.goBack();
            else finish();
            break;

        default:
            break;
    }
    return super.onKeyDown(keyCode, event);
}
}

错误是 onKeyDown 第 42 行。

4

3 回答 3

3

改变这个

 WebView webview = (WebView) findViewById(R.id.webview); 
 // webview becomes local

 webview = (WebView) findViewById(R.id.webview); 

你已经声明了

 WebView webview;

作为班级成员

于 2013-09-03T11:57:03.407 回答
0
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    switch (keyCode) {
        case KeyEvent.KEYCODE_BACK:
            if(webview.canGoBack() == true)

                webview.goBack();
            else finish();
            return true;
    }
    return super.onKeyDown(keyCode, event);
}

这是重复的:如果在 WebView 中按下后退按钮,如何返回上一页?

在任何情况下,如果您处理了按键操作,您都必须返回 true

于 2013-09-03T11:57:21.620 回答
0

试试这个方法

不要覆盖 onKeyDown() 方法

@Override
    public void onBackPressed() {
        if(webview.canGoBack()){
            webview.goBack();
        }else{
            super.onBackPressed();
        }
    }
于 2013-09-03T11:58:41.927 回答