提问者:小点点

android kotlin-开始活动并从意图中获取数据


我想简单地开始一个活动并将一些数据发送到我的第二个活动,这是我的代码:

活动主要:

 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

我调试了,包完全是空的。

这段代码有什么问题?


共3个答案

匿名用户

要检索第二个活动的数据,您只需要直接访问意图的额外数据,如下所示:

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")