Как вернуть информацию в первом упражнении из второго занятия - PullRequest
0 голосов
/ 18 января 2020

Я понимаю, как передать данные из текущего действия во второе действие, используя intent.putExtra.

Эти сообщения очень хорошо объясняют это: активность в прослушивателе обратного вызова активности

Как передать данные между действиями в приложении Android?

Однако меня интересует то, что второе действие отправит данные обратно первому действию, которое его открыло .

Скажем, MeetActivity - это мое основное действие, а затем я активирую EditProfileActivity, которое является вторичным действием:

override fun startEditProfile() {
    startActivity(EditProfileActivity.newIntent(this))
    overridePendingTransition(R.anim.slide_in_up, R.anim.slide_out_down)
}

В EditProfileActivity я создал объект-компаньон:

companion object {
    fun newIntent (context: Context?) = Intent(context, EditProfileActivity::class.java)
}

Тем не менее, я не понимаю, как MeetActivity, которая является основным видом деятельности, может получать информацию от EditProfileActivity (второе действие) Заранее спасибо

1 Ответ

2 голосов
/ 18 января 2020

Вы должны использовать startActivityForResult ()

Из документов

Запуск другого действия не должен быть односторонним. Вы также можете начать другую деятельность и получить результат обратно. Чтобы получить результат, вызовите startActivityForResult () (вместо startActivity ()).

Вы можете запустить действие для результата следующим образом

const val PICK_CONTACT_REQUEST = 1 // The request code.
// ...
private fun pickContact() {
    val pickContactIntent = Intent(Intent.ACTION_PICK).apply {
        // Show user only the contacts that include phone numbers.
        setDataAndType(
            Uri.parse("content://contacts"),
            Phone.CONTENT_TYPE
        )
    }

    startActivityForResult(pickContactIntent, PICK_CONTACT_REQUEST)
}

И получить переопределение результата следующий метод

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent) {
    // Check which request we're responding to
    if (requestCode == PICK_CONTACT_REQUEST) {
        // Make sure the request was successful
        if (resultCode == Activity.RESULT_OK) {
            // The user picked a contact.
            // The Intent's data Uri identifies which contact was selected.

            // Do something with the contact here (bigger example below)
        }
    }
}
...