Как вернуть значение из Activity при навигации назад

«Как вернуть значение из Activity при навигации назад» — вопрос из категории Android компоненты, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Для возврата значения из Activity при навигации назад используйте setResult() перед вызовом finish().

Пример:

// В Activity, которая возвращает результат
val resultIntent = Intent().apply {
    putExtra("key", "value")
}
setResult(Activity.RESULT_OK, resultIntent)
finish()

В вызывающей Activity:

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    super.onActivityResult(requestCode, resultCode, data)
    if (resultCode == Activity.RESULT_OK && requestCode == YOUR_REQUEST_CODE) {
        val result = data?.getStringExtra("key")
    }
}

Для нового Navigation Component (с ActivityResultLauncher):

val resultLauncher = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result ->
    if (result.resultCode == Activity.RESULT_OK) {
        val data = result.data?.getStringExtra("key")
    }
}