StartActivityForResult не работает с функциями расширения Kotlin? - PullRequest
0 голосов
/ 28 мая 2019

Это функция расширения, которую я создал для запуска действий для получения результата, однако действие начинается, но мне не звонят по onActivityResult

inline fun <reified T : Any> Activity.launchActivity(
requestCode: Int = -1,
noinline init: Intent.() -> Unit = {}
) {
val intent = Intent(this, T::class.java)
intent.init()
startActivityForResult(intent, requestCode)
}

обратный вызов onActivityResult

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    super.onActivityResult(requestCode, resultCode, data)
    Timber.d("onActivityResult".plus(OrderProductFragment::class.java.simpleName))

Вызов внутреннего номера внутри Fragment

(context as Activity).launchActivity<CartActivity> (1234) {
                putParcelableArrayListExtra(getString(R.string.cart_items_key), cartItems)
            }

1 Ответ

0 голосов
/ 28 мая 2019

Вам нужно позвонить по этому setResult(), когда вы вернетесь к fragment или activity, откуда вы приехали т.е.

setResult(Activity.RESULT_OK, intent)

это вызовет onActivityResult() в вашем activity или fragment классе

Пример

                    val intent = intent
                    intent.putExtra("key", "put values if you want")
                    setResult(Activity.RESULT_OK, intent)
                    finish()
...