You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

添加webView.loadUrl("https://www.youtube.com")至OnClickListener后应用频繁崩溃重启问题

解决WebView空指针异常的问题

嘿,这个问题我之前开发浏览器类App时也踩过坑!咱们先拆解一下错误原因:

你看到的java.lang.NullPointerException: Attempt to invoke virtual method 'void android.webkit.WebView.loadUrl(java.lang.String)' on a null object reference,本质是你在MainActivity里直接调用了另一个Activity的WebView方法,但这时候目标Activity(url_load_activity)还没启动,它的WebView根本没完成初始化,对象自然是null,所以一调用就崩了。

正确的实现方式

我们需要通过Intent传递要加载的URL,让目标Activity自己完成WebView的初始化和URL加载,步骤如下:

1. 在MainActivity的点击事件里传递URL

把你要加载的URL放到Intent的额外参数里,然后启动目标Activity:

// 注意:Java类名要遵循大驼峰命名规范,建议把url_load_activity改成UrlLoadActivity
Intent yt = new Intent(MainActivity.this, UrlLoadActivity.class);
// 传递URL参数,"TARGET_URL"是自定义的key,后面要对应上
yt.putExtra("TARGET_URL", "https://www.youtube.com");
startActivity(yt);

2. 在目标Activity(UrlLoadActivity)里加载URL

在目标Activity的onCreate方法中,先初始化WebView,再获取Intent传递的URL并加载:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.url_load_activity);

    // 1. 初始化WebView(替换成你xml里WebView的实际id)
    WebView webView = findViewById(R.id.your_webview_id);

    // 2. 给WebView做基础配置(比如启用JavaScript,按需添加)
    WebSettings webSettings = webView.getSettings();
    webSettings.setJavaScriptEnabled(true);

    // 3. 获取Intent传递的URL并加载
    String targetUrl = getIntent().getStringExtra("TARGET_URL");
    if (targetUrl != null && !targetUrl.isEmpty()) {
        webView.loadUrl(targetUrl);
    }
}

额外提醒

  • 记得修改Activity类名:url_load_activity不符合Java命名规范,改成UrlLoadActivity(同时要修改AndroidManifest.xml里的对应声明),这能避免很多潜在的命名混淆问题。
  • 如果不同ImageView要加载不同URL,只需要在各自的点击事件里传递对应的URL即可,目标Activity的逻辑不用改,非常灵活。

这样修改后,跳转和URL加载就能正常工作啦!

内容的提问来源于stack exchange,提问作者Savithu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 08:53:12