按下向后导航键时,Android Webview应用程序强制关闭

时间:2019-07-20 13:45:18

标签: android webview android-webview

这是我的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);
}

}

1 个答案:

答案 0 :(得分:0)

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