这是我的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);
}
}
答案 0 :(得分:0)
在onCreate
中,您正在初始化webView的本地实例。然后,在您的onKeyDown
中,您尝试在类成员WebView webView;
上工作-我相信它从未被初始化过,因此没有NPE。