Вы можете использовать startActivityForResult
вместо startActivity
.
Вот пример
class MainActivity : Activity(){
const val REQUEST_CODE = 10001
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// your implementation
Intent(this,SomeActivity::class.java).apply {
// add your data to intent
startActivityForResult(this,REQUEST_CODE)
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
when (requestCode) {
REQUEST_CODE -> handleResult(resultCode,data)
else ->super.onActivityResult(requestCode,resultCode,data)
}
}
fun handleResult(result:Int,data:Intent?){
if(result!=Activity.RESULT_OK) return
if(data == null) return
val someData = data.getSerializableExtra("key")
// do your stuff with someData
}
}
в вашем SecondActivity
, вы должны использовать метод setResult
для передачи ваших данныхактивность вызывающего абонента (или MainActivity
в данном случае).
class SecondActivity : Activity(){
// your implementation of activity
fun sendSuccessResult(someData:Exercise){
setResult(Activity.RESULT_OK,Intent().apply{ putExtra("key",someData) })
finish()
}
}
Позвонив по номеру sendSuccessResult
и передав ваши данные, данные будут отправлены обратно на ваш MainActivity
.
Подробнее об этом можно прочитать здесь https://developer.android.com/reference/android/app/Activity