获取结果 - Kotlin startActivityForResult 不提供任何结果

Get Result - Kotlin startActivityForResult does not deliver any result

你好,我的 BarcodeActivitystartActivityForResult 通过我的 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!")
    }
}

条码活动

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()
        }
    }

我希望有人能解释或帮助我解决这个问题。非常感谢。

问题是您没有将扫描的条形码值 (sn) 传递给 BarCodeActivity.

中的意图 (returnIntent)

首先确保 snString 因为你想传递一个 StringExtra,因此:

val sn = editTextBarcode.text.toString()

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

returnIntent.putExtra("return_sn", sn)

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

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

val returnIntent:Intent = getIntent()

注意它是 getIntent() 而不是 Intent()

您从错误的地方提取数据。

替换

val returnedSN = intent.getStringExtra("return_sn")

val returnedSN = data.getStringExtra("return_sn")