【问题标题】:Android Navigation Safe Args Pass LiveData and Lambda VariableAndroid Navigation Safe Args 传递 LiveData 和 Lambda 变量
【发布时间】:2021-01-21 18:21:27
【问题描述】:

对于一个简单的Fragment A -> Fragment B 图表,我有两个问题:

  1. 我可以使用 安全参数 传递LiveData 吗?如果没有,我如何从Fragment A 监听Fragment B 中的值变化?

  2. 我可以使用 safe args 传递 lambda 变量(函数)(充当回调侦听器)吗?

【问题讨论】:

  • 首先,您可以在片段之间共享您的 ViewModel。在Activity中初始化这个ViewModel,在Fragment之间共享。现在使用相同的 ViewModel 实例,我们可以观察两个片段的实时数据。
  • 您不使用APIs specifically built for returning a result的原因是什么?

标签: android android-jetpack android-navigation android-navigation-graph android-safe-args


【解决方案1】:

您不能使用安全参数传递 LiveData,但您可以使用 Fragment Result API 来监听其他片段中的值变化

// in fragment A
setFragmentResultListener("requestKey") { requestKey, bundle ->
    // read bundle here
}
// in fragment B
setFragmentResult("requestKey", bundle)

它可以与您的 SafeArgs 类结合使用:

setFragmentResultListener("requestKey") { requestKey, bundle ->
    val args = MyFragmentArgs.fromBundle(bundle)
}
// Fragment B
setFragmentResult("requestKey", MyFragmentArgs(...).toBundle())

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-09-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多