android - Android Navigation Safe Args 传递 LiveData 和 Lambda 变量
问题描述
对于一个简单的Fragment A -> Fragment B
图表,我有两个问题:
我可以
LiveData
使用安全参数通过吗?如果没有,我该如何收听Fragment B
from的值变化Fragment A
?我可以使用安全 args传递 lambda 变量(函数) (充当回调侦听器)吗?
解决方案
你不能使用安全的参数传递 LiveData 但你可以使用Fragment Result API来监听其他 Fragment 中的值变化
// 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())
推荐阅读
- javascript - React 应用程序使用 Laravel 进行 API 和用户登录。关于从数据库中检索当前登录用户的问题
- javascript - 用于 JavaScript 解析 JSON 的 Python/Django 转义字符串列表
- reactjs - TouchableHighlight 影响填充
- python - TypeError: function() 参数 1 必须是代码,而不是 str
- php - 用PHP提取两个字符串之间的数据
- firebase - 自定义事件根本没有显示在 Firebase 仪表板上
- javascript - NPM run serve 在 localhost 上显示我的 vuejs 项目的旧状态
- machine-learning - 如何使用词向量进行测量
- elixir - 如何在 Ecto 中编写这个 where 子句
- c++ - C ++如何将具有不同数量参数的函数作为参数传递