你好,我的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
)。
首先确保sn
是String
,因为您想传递StringExtra
,因此:
val sn = editTextBarcode.text.toString()
然后将sn
传递给您的返回意图:
returnIntent.putExtra("return_sn", sn)
注意,在你的代码中,你传递的是整数1
而不是sn
。
编辑:对代码的另一个小修复,没有注意到它:
val returnIntent:Intent = getIntent()
注意这里是getIntent()
而不是Intent()