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

Kotlin如何通过点击按钮跳转指定Activity并修改其内部WebView的URL

错误原因

你在当前MainActivity中直接引用了另一个WebView页面的控件,此时目标WebView Activity还未启动、布局尚未加载,webViewArticle属于空对象,调用loadUrl就会触发空指针异常。同时注意不要将承载WebView的自定义Activity命名为WebView,会和系统原生的android.webkit.WebView类冲突,导致跳转逻辑错误。

解决方案

1. 主页面通过Intent携带URL传递到目标页面

在MainActivity的点击事件中,仅做跳转和传参操作,不要尝试直接操作目标页面的控件:

// 注意替换WebViewActivity为你自定义的承载WebView的Activity类名
val intent = Intent(this, WebViewActivity::class.java)
// 将要加载的URL存入Intent的额外参数中
intent.putExtra("TARGET_URL", "http://www.google.com")
startActivity(intent)

2. 目标WebView页面接收参数并加载内容

在承载WebView的Activity的onCreate生命周期中,先完成布局和控件初始化,再读取参数加载URL:

class WebViewActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        // 先加载你的WebView所在的布局文件
        setContentView(R.layout.activity_webview)
        // 初始化WebView控件
        val mwebViewArticle = findViewById<WebView>(R.id.webViewArticle)
        // 可选配置:开启JS支持,大部分现代网页需要该配置
        mwebViewArticle.settings.javaScriptEnabled = true
        // 读取传递过来的URL参数
        val targetUrl = intent.getStringExtra("TARGET_URL")
        // 非空校验后加载网页
        targetUrl?.let { url ->
            mwebViewArticle.loadUrl(url)
        }
    }
}
额外注意事项
  • 需要在AndroidManifest.xml中添加网络权限,否则WebView无法加载在线网页:
    <uses-permission android:name="android.permission.INTERNET" />
    
  • 如果加载的网页有HTTPS混合内容的问题,可以额外配置WebView的混合内容加载模式,适配不同系统版本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 15:03:04