onActivityResult返回空数据

时间:2018-11-26 15:11:05

标签: android kotlin

我刚刚用Kotlin编码了一段时间。我遇到了一些问题。

在第二个活动中单击项目后,它总是在返回空数据。

第一个活动

btnClick.setOnClickListener { v ->
        val intent = Intent(applicationContext, NumberPickerActivity::class.java)
        startActivityForResult(intent, 777)
    }



 override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    try {
        super.onActivityResult(requestCode, resultCode, data)
        if (requestCode == 777 && resultCode == Activity.RESULT_OK) {
            val result = data?.getStringExtra("picked_product").toString()
            Toast.makeText(applicationContext, result, Toast.LENGTH_SHORT).show()
        }
    } catch (e: Exception) {
        Toast.makeText(applicationContext, e.message, Toast.LENGTH_LONG).show()
    }

}

第二次活动

override fun onItemClick(item: Product) {
         val intent = Intent()
         intent.putExtra("picked_product", item.price)
         setResult(Activity.RESULT_OK, intent)
         finish()
}

2 个答案:

答案 0 :(得分:2)

由于您期望使用Int,请执行以下操作:

val result = data?.getIntExtra("picked_product", 0) //0 will be used in case no value in data and result is now Integer.

答案 1 :(得分:0)

您打算添加的额外内容是一个整数(item.price)。但是,您正在尝试检索字符串data?.getStringExtra("picked_product")

如果意图在键"picked_product"上不包含字符串,则返回null

您应该尝试获取额外的Int信息:

val result = data?.getIntExtra("picked_product")

与您的问题无关,但没用

data?.getStringExtra("picked_product").toString()

由于它返回了一个字符串,因此toString()的使用是无用的