我想简单地开始一个活动并将一些数据发送到我的第二个活动,这是我的代码:
活动主要:
val intent = Intent(this@MainActivity, Cards::class.java)
intent.putExtra("title", catItem.name)
intent.putExtra("catId", catItem.id)
startActivity(intent)
catItem不为空,其中的每个项目都有值,我已经调试过,我很确定。
我需要获取数据的第二个活动:
val bl:Bundle=intent.extras
catId=bl.getString("catId")
title=bl.getString("title")
它在第二行崩溃:
bl.getString("catId") must not be null
我调试了,包完全是空的。
这段代码有什么问题?
要检索第二个活动的数据,您只需要直接访问意图的额外数据,如下所示:
val catId = intent.getStringExtra("catId")
此外,请确保catId类型是String(ID通常是整数或Long),因为如果它不是String,您将得到相同的错误。
根据您的活动开始代码(只是您的代码副本):
val intent = Intent(this@MainActivity, Cards::class.java)
intent.putExtra("title", catItem.name)
intent.putExtra("catId", catItem.id)
startActivity(intent)
在Cards ActivityonCreate
方法中:
如果他们是
要求:
val arguments = requireNotNull(intent?.extras){"There should be parameters or your more meaningful message."}
with(arguments){
catId = getString("catId")
title = getString("title")
}
不需要:
catId = intent?.extras?.getString("catId").orEmpty()
title= intent?.extras?.getString("title").orEmpty()
或
catId = intent?.extras?.getString("catId","default Cat").orEmpty()
title= intent?.extras?.getString("title","default Title").orEmpty()
将getExtra
更改为getStringExtra
bl.getStringExtra("catId")