带有 Kotlin 的 Android - 将数据传回上一个 Activity

标签 android kotlin android-intent

我想将数据从 Activity 2 传回 Activity 1,但它不起作用。我尝试使用 onActivityResult 来解决,但它从未被调用过。

这是我的 Activity 1 - ProductsActivity

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        Log.v("onActivityResult", "onActivityResult")
        super.onActivityResult(requestCode, resultCode, data)
        if (requestCode == 1) {
            // 2
            if (resultCode == Activity.RESULT_OK) {
                // 3
                Log.v("onActivityResult", "onActivityResult")
            }
        }
    }

这是我的第二个 Acitvity - DetailsProductAcitivity

override fun onBackPressed() {
        super.onBackPressed()
        Log.v("onActivityResult", "on back pressed")
        val intent = Intent(this, ProductsActivity::class.java)
        startActivityForResult(intent, 1)
    }

最佳答案

它没有被调用是因为:

  1. 你没有设置结果
  2. 您看起来像是在创建一项新 Activity ,而不是完成当前 Activity (?)

在您的第一个 Activity 中:

private fun launchNewActivity() {
    val requestCode = [yourCodeHere]
    val intent = Intent(this, ProductDetailsActivity::class.java)
    startActivityForResult(intent, requestCode)
}

在你的第二个 Activity 中

private fun passProductAsResult(product: Product) {
    val data = Intent()
    data.putExtra("product", product.toString());

    setResult(Activity.RESULT_OK, data);
    finish()
}

回到你的第一个 Activity 覆盖方法onActivityResult

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
     if(resultCode != Activity.RESULT_OK) return
     when(requestCode) {
         [yourRequestCode] -> { yourTextView.text = data.getStringExtra("product"); }
         // Other result codes
         else -> {}
     }
}

如果您使用的是复杂数据类型,请确保数据类型是SerializableParcelable

关于带有 Kotlin 的 Android - 将数据传回上一个 Activity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59874541/

相关文章:

android - 哪个版本的 eclipse 可以安全地用于 android 开发?

Android Firebase PERMISSION_DENIED 原因 API_KEY_SERVICE_BLOCKED

android - 用浏览器打开网址

android - 第二次单击时,TabActivity 中的 Activity 不运行 onCreate 方法

javascript - 调用(动态)JS函数从Kotlin返回Promise

java - 如何将值从 ListView 传递到 detalis Activity

android - 如何更改相机预览回调缓冲区的方向?

android - .onStart() 未调用 Firebase RecyclerView ClickListener

android - 如何在后台运行此 Android 代码

Android JobScheduler 错误 : delay is increased after reboot (param minimumLatency)