Zdarzają się sytuacje że chcemy, aby nowo otwarte activity zwróciło rezultat swojego działania do aktywności z której zostało uruchomione. Aby uzyskać taki efekt należy uruchomić nową activity za pomocą startActivityForResult.
Na początku tworzymy intent i uruchamiamy activity za pomocą startActivityForResult:
val intent = Intent(this, NotMainActivity::class.java)
startActivityForResult(intent, 1) // wstawiamy intent oraz requestCode, który będzie nam potrzebny później
W NotMainAcitivty przed wywołaniem finish() ustawiamy rezultat:
Intent i = Intent()
i.putExtra("REZULTAT ", "zwracany wynik")
setResult(Activity.RESULT_OK, i)
finish()
Wynik odbieramy w pierwszej aktywności. W tym celu nadpisujemy metodę onActivityResult:
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
//sprawdzamy requestCode - dzięki temu wiemy z jakiej aktywności zwracany jest wynik
if (requestCode == 1) {
if (resultCode == Activity.RESULT_OK) {
// pobieramy rezultat
val result = data?.getStringExtra("REZULTAT")
}
if (resultCode == Activity.RESULT_CANCELED) {
// wykonujemy odpowiednią akcje dla przypadku gdy nie otrzymamy rezultatu
}
}
}