作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在文档中描述了将数据从片段传递到 Activity (https://developer.android.com/training/basics/fragments/communicating.html)的方法。
我有相反的情况,我需要将数据从 Activity 传递到片段。设置从片段回调到 Activity 的最佳方法是什么?我在片段中使用了(activity as MainActivity).setCallback(this)
,并且可以正常工作。
最佳答案
在这种情况下,您的 Activity 不知道该片段是否已创建/未销毁。
您可以使用liveData实现所需的功能。
在MainActivity中:
class MainActivity: BaseFragmentActivity() {
val viewModel: CustomViewModel by viewModels()
fun yourFunction() {
viewModel.dataToPassToFragment.value = yourData
}
}
class CustomViewModel: ViewModel() {
var dataToPassToFragment = MutableLiveData<String>()
}
class CustomFragment: BaseFragment() {
override val viewModel: CustomViewModel by activityViewModels()
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
super.onCreateView(inflater, container, savedInstanceState)
viewModel.dataToPassToFragment.observe(this, Observer { data ->
// do what you want with this data
})
}
}
关于android - 如何将回调从 Activity 传递到 fragment ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61931359/
我是一名优秀的程序员,十分优秀!