首页 > 解决方案 > Android onActivityResult() 总是返回 null

问题描述

我正在尝试将子活动的结果返回给父活动。这是我在父活动中的代码

        private val REQUEST_CODE = 1       
     override fun onCreate(savedInstanceState: Bundle?) {
       startActivityForResult(Intent(this,DescriptionActivity::class.java).apply{
                    putExtra("EXTRA_FOOD_NAME", foodName)
                    putExtra("EXTRA_IMAGE", image)
                    putExtra("EXTRA_FOOD_DESC", foodDesc)
                },REQUEST_CODE) 
    }

    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        super.onActivityResult(requestCode, resultCode, data)
        if(requestCode == REQUEST_CODE &&
                resultCode == Activity.RESULT_OK){
//It is null when I check it inside here
            val orderedFood = intent.getStringExtra("EXTRA_ORDER")
            current_oreder.add(orderedFood)

        }

    }

儿童活动

 override fun onCreate(savedInstanceState: Bundle?) {   
val foodName = intent.getStringExtra("EXTRA_FOOD_NAME")
        btnAddToOrder.setOnClickListener{addToOrder(foodName)}
    }

private fun addToOrder(foodName:String?)
    {
        val orderIntent: Intent = Intent().apply {
            putExtra("EXTRA_ORDER", foodName)
        }
        setResult(Activity.RESULT_OK, orderIntent)
        finish()
    }

我检查了子活动的 foodName 变量是否具有空值但它具有正确的值。当我将它返回给父活动时,它会变为 null。我尝试了在互联网上找到的解决方案,但没有奏效。任何人都可以解决这个问题吗?

标签: android

解决方案


在onActivityResult方法中使用:</p>

data?.getStringExtra("EXTRA_ORDER")
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        super.onActivityResult(requestCode, resultCode, data)
        if(requestCode == REQUEST_CODE &&
                resultCode == Activity.RESULT_OK){
//It is null when I check it inside here
            val orderedFood = data?.getStringExtra("EXTRA_ORDER")
            current_oreder.add(orderedFood)
        }
    }

推荐阅读