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
相关产品推荐
相关产品推荐

