Android. StartActivityForResult
Имеется Fragment из которого я хочу запустить activity и получить из нее результат.
Запускаю так:
val intent = Intent(it, PaymentActivity::class.java)
intent.putExtra("amount", dot.revenue.toString())
intent.putExtra("id", currentDid)
startActivityForResult(intent, SUCCESS_PAYMENT)
Пытаюсь получить во Fragment:
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
if (requestCode == SUCCESS_PAYMENT) {
if (resultCode == Activity.RESULT_OK) {
Toast.makeText(context, "Оплата прошла успешно", Toast.LENGTH_LONG).show()
currentDid?.let {
viewModel.getDot(currentDid!!)
}
} else {
Toast.makeText(context, "Оплата не прошла", Toast.LENGTH_LONG).show()
}
}
super.onActivityResult(requestCode, resultCode, data)
}
Activity, к которой принадлежит этот фрагмент
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
}
Запускаемая Activity
if(paymentResultContext.getDeferredData() == null){
dismiss()
saveCheck(paymentResultContext, did);
Intent returnIntent = new Intent();
mActivity.setResult(Activity.RESULT_OK, returnIntent);
mActivity.finish();
}
else{
Intent returnIntent = new Intent();
mActivity.setResult(Activity.RESULT_CANCELED, returnIntent);
mActivity.finish();
}
Но Toast после завершения Activity не срабатывает
Update. Повесил Log на onActivityResult в MainActivity Прилетает
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
Log.d("requestCode", requestCode.toString())
Log.d("resultCode", resultCode.toString())
if(data != null){
Log.d("data", data.toString())
}
else{
Log.d("data", "null")
}
super.onActivityResult(requestCode, resultCode, data)
}