到目前为止,没有人能够提供解决此问题的答案或解决方案。我希望有人能有所贡献,因为我不知所措。还有这篇文章(什么是 NullPointerException,我该如何解决?),即使每个人都一直推荐它作为“空异常”的“指南”,但我发现它很难适用于我的情况,因为它涉及webView 和我在下面的 java 脚本中提供的设置。
如果我从活动中删除 webView 行,活动的页面会在应用程序中正常加载。当然,全白且没有内容,但它会加载。一旦我将 webView 代码添加回活动;该应用程序在尝试加载时立即崩溃。虽然它看起来崩溃了,但该应用程序实际上以全白加载了活动页面,并在没有关闭的情况下将自己扔到设备的背景中,并弹出一条通知,说明应用程序已经崩溃了。它并没有真正退出应用程序,它只是将它扔到后台并发送一条错误消息。所以我相信在查看我的webView相关代码时可以找到补救措施,但是我找不到它并且之前推荐的方法都没有补救它。我应该注意到,这发生在我实际连接的设备和 Android Studio 的模拟器上,
这是我的 LogCat
05-08 14:19:03.423 31797-31797/com.app.sega E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.app.sega, PID: 31797
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.app.sega/com.app.sega.sega}: java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.webkit.WebView.findViewById(int)' on a null object reference
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.webkit.WebView.findViewById(int)' on a null object reference
at com.app.sega.sega.onCreate(sega.java:18)
我刚刚更新了下面的文件内容以尝试解决此问题。这就是我现在所拥有的。得到相同的结果。
sega.java 中新活动的 webView 脚本
package com.app.sega;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import androidx.appcompat.app.AppCompatActivity;
public class sega extends AppCompatActivity {
private WebView webview_s;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sega);
webview_s = (WebView)webview_s.findViewById(R.id.webview_sega);
webview_s.getSettings().getJavaScriptEnabled();
webview_s.setWebViewClient(new WebViewClient_s());
webview_s.setInitialScale(1);
webview_s.getSettings().getBuiltInZoomControls();
webview_s.getSettings().getUseWideViewPort();
}
private class WebViewClient_s extends WebViewClient {
public boolean shouldOverrideURLLoading (WebView view, String url) {
if (Uri.parse(url).getHost().equals("www.southeastgeorgiatoday.com")) {
return false;
}else {
Intent intent_sega = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity(intent_sega);
return true;
}
}
}
}
我在 (sega.java:18) 上看不到任何空/空的内容。这是第 18 行的内容:
webview_s = (WebView)webview_s.findViewById(R.id.webview_sega);
哪里有空条目?这是位于 activity_sega.xml 中的 webView xml。你可以看到我在上面的java代码中输入了正确的webView id。
<WebView android:id="@+id/webview_sega"
android:layout_width="match_parent"
android:layout_height="match_parent" />