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

Kotlin中Intent转发URL触发StackOverflowError问题求解

解决RecyclerView传URL到WebViewActivity时的StackOverflowError问题

错误原因

你在代码里犯了一个关键错误:把创建的gotoWebView Intent对象本身作为Extra参数放进了同一个Intent里。当系统准备启动Activity、尝试将Intent序列化写入Parcel时,会递归处理Intent携带的所有Extra数据,而Extra里又包含这个Intent本身,形成无限递归循环,直接撑爆栈内存,触发StackOverflowError。

修复代码

正确的做法是传递从prodBundle中获取的URL字符串,而非Intent对象本身。修改后的代码如下:

prodBundle?.getString("btnURLMainTabFragment1").let { url ->
    btn_wvURL.setOnClickListener {
        val gotoWebView = Intent(this@DetailsActivity, WebViewActivity::class.java)
        gotoWebView.putExtra("btnURLMainTabFragment1", url)
        startActivity(gotoWebView)
    }
}

补充说明

  • 给外层let的参数命名为url,避免和点击事件lambda里的默认参数it重名,保证逻辑清晰。
  • 在WebViewActivity中,通过intent.getStringExtra("btnURLMainTabFragment1")即可获取到传递的URL,后续正常加载到WebView即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 17:27:24