返回上一页,后退按钮不起作用

时间:2018-03-26 19:54:25

标签: android

请原谅我,如果这个问题之前被问了太多次。但我一直试图解决它并尝试了所有的解决方案,但似乎没有什么对我有用。你能指点一下我在这里失踪了吗? 当我按下移动设备上的后退按钮时,它会退出应用程序而不是转到webView的后页。 我非常感谢你帮助我在这里做错了什么。

import android.app.Activity;
import android.os.Bundle;
import android.webkit.WebView;

public class MainActivity extends Activity {
    private WebView myWebView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        WebView myWebView = (WebView) findViewById(R.id.webView1);
        myWebView.getSettings().setJavaScriptEnabled(true);
        myWebView.loadUrl("file:///android_asset/index.html");

    }
    @Override
    public void onBackPressed() {
        if (myWebView.canGoBack()) {
            myWebView.goBack();
        } else {
            super.onBackPressed();
        }
    }
}

2 个答案:

答案 0 :(得分:2)

onCreate中的此语句定义了一个名为myWebView局部变量,它隐藏了具有相同名称的实例变量:

WebView myWebView = (WebView) findViewById(R.id.webView1);

因此,实例变量的值为null,而onBackPressed可能会抛出NullPointerException

尝试将该语句更改为:

myWebView = (WebView) findViewById(R.id.webView1);

答案 1 :(得分:0)

试试这个

mainView.setOnKeyListener(new View.OnKeyListener() {
    @Override
    public boolean onKey(View v, int keyCode, KeyEvent event) {
        if (event.getAction() == android.view.KeyEvent.ACTION_DOWN) {
            if ((keyCode == android.view.KeyEvent.KEYCODE_BACK)) {
                if(webView!=null)
                {
                  if(webView.canGoBack())
                  {
                    webView.goBack();
                  }
                }
            }
        }
        return true;
    }
});