Android webview上一页的后退按钮无法正常工作

Ari*_*ant 5 android back-button webview

我试图覆盖后退按钮,以便它返回上一页,但它只是退出应用程序.这里;代码..请告诉我哪里出错了.

package com.example.thebase;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.util.Log;
import android.view.KeyEvent;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Toast;

public class MainAccelerometer extends Activity implements AccelerometerListener{

WebView myWebView;
//Back Button Code
     @Override
        public boolean onKeyDown(int keyCode, KeyEvent event) {
            if(event.getAction() == KeyEvent.ACTION_DOWN){
                switch(keyCode)
                {
                case KeyEvent.KEYCODE_BACK:
                    if(myWebView.canGoBack() == true){
                        myWebView.goBack();
                    }else{
                        finish();
                    }
                    return true;
                }

            }
            return super.onKeyDown(keyCode, event);
        }


//--------------------  


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.accelerometer_example_main);
    //ENABLING JAVASCRIPT CODE
            WebView myWebView = (WebView) findViewById(R.id.webview);
            WebSettings webSettings = myWebView.getSettings();
            webSettings.setJavaScriptEnabled(true);


            //WEBVIEW CODE
              myWebView = (WebView) findViewById(R.id.webview);
            myWebView.loadUrl("http://www.pingcampus.com/greedy/get_category.php");


            //WebView client
              myWebView.setWebViewClient(new HelloWebViewClient());

              //Back Button

              //------


        };
//rest of the code
Run Code Online (Sandbox Code Playgroud)

TNR*_*TNR 23

你有onBackPressed()方法来覆盖而不是onKeyDown().更换onKeyDown()onBackPressed()如下:

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

}
Run Code Online (Sandbox Code Playgroud)

编辑

还要检查你的onCreate()中的第3行

WebView myWebView = (WebView) findViewById(R.id.webview);
Run Code Online (Sandbox Code Playgroud)

myWebView再次声明为局部变量,并且未实例化全局变量,这会抛出NullPointerException并崩溃应用程序.

因此,请更改您的第3行代码,如下所示:

myWebView = (WebView) findViewById(R.id.webview);
Run Code Online (Sandbox Code Playgroud)