I have ActivityA
from where I open another activity:
val intent = Intent(this, ActivityC::class.java)
startActivityForResult(intent, 99)
When I finish ActivityC
as expected, I get the callback in onActivityResult
of ActivityA
.
The problem is that if I open another activity from ActivityA
like:
startActivity(Intent(this, ActivityB::class.java))
before calling finish()
in ActivityC
, and then do finish()
in ActivityC
I don't get the callback.
Is there any workaround about this?
CODE
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
findViewById<TextView>(R.id.clickme).setOnClickListener {
startActivityForResult(Intent(this, MainActivity2::class.java), 99)
Handler().postDelayed({
startActivity(Intent(this, MainActivity3::class.java))
}, 1000)
}
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
System.out.println("Came to onActivityResult")
}
}
Activity2:
class MainActivity2 : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main2)
Handler().postDelayed({
setResult(RESULT_OK)
finish()
}, 2000)
}
}
Removing the call:
startActivity(Intent(this, MainActivity3::class.java))
Will trigger the onActivityResult
as expected.