从片段向活动传递数据不一样

时间:2019-01-04 11:38:28

标签: android android-activity kotlin fragment

我的活动片段。我想将数据从片段发送到活动。 enter image description here

我如何在Fragment中获取数据并发送到我的Activity:

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

活动中:

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

然后我在onClick旁边的按钮中调用idItem,并向Toast显示idItem中的值

在片段中,当我测试数据时,问题!!。id = 8 但是吐司正显示11。问题是,为什么将数据从片段传递到活动并不相同。请指导我:(

2 个答案:

答案 0 :(得分:0)

对于在活动和片段(在同一活动中)之间传递数据的建议。这些都是可能的情况。

  1. (活动->活动)
  2. (活动->片段)
  3. (片段->活动)
  4. (片段->片段)

对于1.,只需使用android.content.Intent。对于2.,3。和4.场景,我们可以使用android.arch.lifecycle.ViewModel在它们之间传递数据。 4. (Fragment -> Fragment)的示例在主题Share data between fragments下的此处(https://developer.android.com/topic/libraries/architecture/viewmodel)。

例如,它不仅可以应用于4.场景,还可以应用于2.3.

答案 1 :(得分:0)

我不确定我们剩下的代码是什么。下面的这段代码对我有用。

// 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()
}