在文档中描述了将数据从片段传递到活动的方法(https://developer.android.com/training/basics/fragments/communicating.html)。我有相反的情况,我需要将数据从活动传递到片段。设置从片段回调到活动的最佳方法是什么?我用(activity as MainActivity).setCallback(this)
一个片段,它的工作原理。
在这种情况下,您的活动不知道该片段是否已创建/未销毁。您可以使用liveData实现所需的功能。
在MainActivity中:
class MainActivity: BaseFragmentActivity() {
val viewModel: CustomViewModel by viewModels()
fun yourFunction() {
viewModel.dataToPassToFragment.value = yourData
}
}
ViewModel:
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
})
}
}
这样做,您的活动不需要了解片段,并且如果活动更改了数据并且片段被销毁,则不会有任何崩溃。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句