【发布时间】:2020-08-24 22:18:06
【问题描述】:
我的项目设置了 DataBinding,所以 RecyclerView Item 被点击,Fragment 的 ViewModel 获取数据并需要更改 Fragment。因此,我创建了一个在 Fragment 本身中实现的回调来更改它,但是当它被调用时,getActivity() 函数(或下面写的“活动?”)为空。
回调接口
interface FragmentCallBack {
fun fragmentCallBack(object: Object?)
}
片段
class MainFragment : Fragment(), FragmentCallBack {
override fun fragmentCallBack(object: Object?) {
val fragment = NewFragment.newInstance()
// Here is the issue <------------------------
activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.container, fragment)?.commit()
}
}
片段视图模型
class FragmentViewModel : ViewModel() {
val callback: FragmentCallBack = MainFragment()
private fun getData(string: String) {
val liveData = Repository.getData(string)
callback.fragmentCallBack(liveData.value)
}
}
【问题讨论】:
标签: android android-fragments mvvm callback android-viewmodel