передача данных от фрагмента к деятельности не то же самое - PullRequest
0 голосов
/ 04 января 2019

У меня есть фрагмент в деятельности.и я хочу отправить данные от фрагмента к деятельности.enter image description here

как я получаю данные во фрагменте и отправляю их в свою деятельность:

val edit = question!!.id
(activity as QuestionActivity).kirimItem(edit)

в действии:

fun kirimItem(item: String) {
    idItem = item
}

и явызовите idItem в кнопке рядом с onClick и покажите Toast значение из idItem

во фрагменте, когда я проверяю данные, вопрос !!. id = 8, но toast показывает 11. Вопрос в том, зачем передавать данные изФрагмент деятельности не совпадает.пожалуйста, ведите меня: (

Ответы [ 2 ]

0 голосов
/ 04 января 2019

Я не уверен, что это остальная часть нашего кода. Этот фрагмент кода ниже работает для меня.

// Fragment, `btn` is Button and `edt` is EditText
btn.setOnClickListener {
    (activity as MainActivity?)?.callToast(edt.text.toString())
}

// Activity
fun callToast(str: String) {
    Toast.makeText(this, str, LENGTH_SHORT).show()
}
0 голосов
/ 04 января 2019

Существуют рекомендации для передачи данных между действиями и фрагментами (в одном действии). Это возможные сценарии.

  1. (Активность -> Активность)
  2. (Задание -> Фрагмент)
  3. (Фрагмент -> Деятельность)
  4. (Фрагмент -> Фрагмент)

Для 1. Просто используйте android.content.Intent. Для сценариев 2., 3. и 4. мы можем использовать android.arch.lifecycle.ViewModel для передачи данных между ними. Пример для 4. (Fragment -> Fragment) здесь (https://developer.android.com/topic/libraries/architecture/viewmodel) в разделе Share data between fragments.

В этом примере его можно применять не только к сценарию 4., но и к 2. и 3..

...