Kotlin数组通过Intent传递后Toast无法显示正确值求助
问题分析与解决
你的问题核心是Activity2中获取数组的方式错误,具体问题和修正方案如下:
错误点1:语法错误
你写的val newArr = intent("key4")是无效语法,Kotlin中Intent没有这种直接调用的方式,必须使用对应的getExtra系列方法。
错误点2:使用了过时且不匹配的方法
getSerializableExtra被标灰是因为该方法已过时,更关键的是:intArrayOf创建的IntArray是基本类型数组,它并没有实现Serializable接口,这也是你最终输出[!@c1b80a4](内存地址格式)的原因——你没有正确拿到数组对象。
正确实现步骤
1. 在Activity2中正确获取数组
Intent专门为基本类型数组提供了对应的获取方法,针对整型数组,直接使用getIntArrayExtra即可:
val newArr = intent.getIntArrayExtra("key4")
2. 正确显示数组内容
拿到数组后,同样通过contentToString()方法转换为可读字符串,同时建议加空判断避免崩溃:
Toast.makeText(applicationContext, "Received Array = ${newArr?.contentToString() ?: "Empty"}", Toast.LENGTH_LONG).show()
补充说明
Intent针对不同数据类型提供了专属的传递/获取方法,比如:
- 字符串数组:
getStringArrayExtra - 布尔数组:
getBooleanArrayExtra - 自定义对象:现在推荐用
putParcelableExtra/getParcelableExtra替代过时的Serializable方案
内容的提问来源于stack exchange,提问作者Paul Hinrichsen
相关产品推荐
相关产品推荐

