Android 按下后退导航键时 Webview 应用强制关闭

Android Webview app force closes while pressing the back navigation key

这是我的 MainActivity 代码,在应用程序中浏览时没有问题,它几乎加载了我网站的所有内容,但按下后退按钮会导致我的应用程序立即崩溃。看看我的代码。还有一件事是我无法加载水平进度条。假设我的 activity_main.xml 已设置 android:id="@+id/progressBar2" 进度条 ID,现在请在下面提到的评论部分为其添加 java 代码。

import android.os.Bundle;
import android.view.KeyEvent;
import android.webkit.WebView;
import android.webkit.WebViewClient;

import androidx.appcompat.app.AppCompatActivity;

import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.AdView;
import com.google.android.gms.ads.MobileAds;

public class MainActivity extends AppCompatActivity {

private AdView mAdView;
WebView webView;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    //setting progress horizontal progress bar

    //adding admob monetization
    MobileAds.initialize(this,
            "ca-app-pub-8084091883486704/3115574815");

    mAdView = findViewById(R.id.adView);
    AdRequest adRequest = new AdRequest.Builder().build();
    mAdView.loadAd(adRequest);


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

    webView.getSettings().setJavaScriptEnabled(true);

    webView.setWebViewClient(new clienthandle());
    webView.loadUrl("https://www.google.com");
}
//should load the page within webview, skipping default web browser
public class clienthandle extends WebViewClient {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url){
        view.loadUrl("https://www.google.com");
        return true;
    }
}

//initiate navigation
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if ((keyCode == KeyEvent.KEYCODE_BACK) && this.webView.canGoBack()) {
        this.webView.goBack();
        return true;
    }

    return super.onKeyDown(keyCode, event);
}

}

在您的 onCreate 中,您正在初始化 webView 的本地实例。然后,在您的 onKeyDown 中,您试图在 class 成员 WebView webView; 之上工作 - 我相信它从未被初始化,因此 NPE。