Kotlin开发:Intent传字符串后获取到null值的问题求助
问题修正:Intent传递字符串获取为null的解决办法
错误原因
你在MainActivity中通过putExtra("EXTRA_NAME", name)传递的是单个字符串,但在SecondActivity中错误使用了getStringArrayExtra("EXTRA_NAME")方法——这个方法专门用于读取字符串数组类型的Intent Extra,无法匹配你传递的单个字符串,因此返回null。
修正后的SecondActivity代码
将获取Extra的方法替换为getStringExtra,这才是读取单个字符串类型Extra的正确方法:
class SecondActivity:AppCompatActivity() { private lateinit var binding: ActivitySecondBinding override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) binding= ActivitySecondBinding.inflate(layoutInflater) setContentView(binding.root) // 替换为getStringExtra读取单个字符串,添加默认值避免空字符串问题 val name=intent.getStringExtra("EXTRA_NAME") ?: "未获取到名称" val toPrint="$name hahahaha" binding.tvNameIntent.text=toPrint } }
额外优化建议
为了避免因字符串拼写错误导致的类似问题,建议用常量定义Intent Extra的键,示例如下:
// 可在MainActivity或单独的常量类中定义统一的Extra键 const val EXTRA_NAME = "EXTRA_NAME" // MainActivity中传递数据 it.putExtra(EXTRA_NAME, name) // SecondActivity中获取数据 val name=intent.getStringExtra(EXTRA_NAME) ?: "未获取到名称"
内容的提问来源于stack exchange,提问作者PCAPS
相关产品推荐
相关产品推荐

