4

让“返回”按钮在 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);
    }
}
4

2 回答 2

3

创建mywebview一个类实例变量。

public class SiB extends Activity {
WebView mywebview;

然后确保不要通过取出声明中的声明来隐藏它,onCreate()它应该如下所示:

mywebview = (WebView) findViewById(R.id.webview);
mywebview.loadUrl("url");

根据我能找到的,Gabe 是对的。onKeyDown()后压机仅适用于 API 4 及更低版本。onBackPressed()应该适用于比 API 4 更新的一切。

@Override
public void onBackPressed(){

    if (mywebview.canGoBack()) {
        mywebview.goBack();
        return;
    }
    super.onBackPressed();      
}
于 2013-02-15T18:23:08.640 回答
2

onKeyDown 对后面不起作用。您需要覆盖 onBackPressed。

于 2013-02-15T18:22:34.953 回答