Я пытаюсь вернуть результат дочерней активности родительской активности. Это мой код в родительской активности
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 дочерней активности нулевое значение, но имеет правильное значение. Он меняется на ноль, когда я возвращаю его родительскому действию. Я пробовал решения, которые нашел в Интернете, но это не сработало. Кто-нибудь может решить эту проблему?
Благодарим за ваше предложение. О какой части вы говорите?
Эта строка val orderedFood = intent.getStringExtra("EXTRA_ORDER") как намерение является намерением действия, а не намерением результата, которое здесь называется data
Используется в методе onActivityResult:
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)
}
}
Вы хотели написать?
data.getStringExtra("EXTRA_ORDER")