【问题标题】:passing data from fragment to activity is not same将数据从片段传递到活动是不同的
【发布时间】:2019-01-04 11:38:28
【问题描述】:

我有片段在活动。我想将数据从片段发送到活动。

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

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

活动中:

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

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

在片段中,当我测试数据时,question!!.id = 8 但是 toast 显示 11。问题是,为什么将数据从片段传递到活动是不一样的。请指导我:(

【问题讨论】:

标签: android android-activity kotlin fragment


【解决方案1】:

我不确定我们代码的其余部分是什么。下面的这段代码对我有用。

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

【讨论】:

  • 我试试这个代码,但是吐司是显示8、10、11。它一个一个显示。我不知道为什么
  • 您能否提供有关您的代码的更多信息?就像 1. 确保其余代码不会触及变量 idItem 2. 如果某些代码与 idItem 变量相关,则需要显示所有这些,尤其是对于该变量的其他设置值。 3. 如果可能,显示活动和片段的完整代码。
【解决方案2】:

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

  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.

【讨论】:

  • 这是一个很好的做法,但它并不能说明问题所在。
  • 抱歉没有说出根本原因。片刻之后,它对我有用。请在下一个答案中看到它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-24
  • 2018-03-07
  • 1970-01-01
相关资源
最近更新 更多