Get Result - Kotlin startActivityForResult不提供任何结果



你好,我的BarcodeActivity是由startActivityForResult通过我的PCActivity调用。然后应该将扫描的条形码的值返回给PCActivity并插入到那里的文本字段中。不幸的是,我没有得到返回的值。然而,应用程序也不会崩溃。这是我的代码。

PCActivity:

sn_mb.setDrawableRightTouch {
val intent = Intent(this@PCActivity, BarcodeActivity::class.java)
startActivityForResult(intent, 1)
}

[…]

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (requestCode == 1 && resultCode == Activity.RESULT_OK && data != null) {
val returnedSN = intent.getStringExtra("return_sn")
sn_mb.setText(returnedSN)
} else {
sn_mb.setText("FEHLER!")
}
}

BarcodeActivity

saveBtn.setOnClickListener {
val sn = editTextBarcode.text.toString()
sn.toString()
if (sn!= "") {
val returnIntent:Intent = Intent()
returnIntent.putExtra("return_sn", sn)
setResult(Activity.RESULT_OK, returnIntent)
finish()
} else {
Toast.makeText(
applicationContext,
"Das ist keine gültige Seriennummer",
Toast.LENGTH_SHORT
).show()
}
}
我希望有人能解释或帮助我解决这个问题。非常感谢。

您从错误的位置提取数据。

代替

val returnedSN = intent.getStringExtra("return_sn")

val returnedSN = data.getStringExtra("return_sn")

问题是您没有将扫描的条形码值(sn)传递给BarCodeActivity中的意图(returnIntent)。

首先确保snString,因为您想传递StringExtra,因此:

val sn = editTextBarcode.text.toString()

然后将sn传递给您的返回意图:

returnIntent.putExtra("return_sn", sn)

注意,在你的代码中,你传递的是整数1而不是sn

编辑:对代码的另一个小修复,没有注意到它:

val returnIntent:Intent = getIntent()

注意这里是getIntent()而不是Intent()

最新更新