我们如何实现片段和活动之间的共享视图模型通信,其中活动不是父



我正在努力实现Fragment到Activity的通信,因为Activity不是父Activity。

所以,我有一个MainActivity,它有一个叫做ContactListFragment的片段,当点击MainActivityBottomNavigationView上的添加按钮时,我正在打开另一个AddContactActivity来添加联系人。我的要求是,当我单击AddContactActivity上的保存按钮时,我需要在ContactListFragment中启动与服务器的数据同步。我认为最好的方法是使用共享视图模型,但在这种情况下,我应该如何创建视图模型,使生命周期所有者不被改变?

我想使用Application Context作为所有者,但我觉得这对这样的任务来说是一个过度的,当其他模块被添加到项目中时,它可能会产生一些后果。

那么是否有一种方法可以有效地实现这种方法呢?谢谢。

用需要同步的object/objects/Data类型编写一个接口类

interface OnSaveClickListener {
fun onSaveClicked(contact: Contact)
}

现在在ContactListFragment类

class ContactListFragment : Fragment(), OnSaveClickListener {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
(activity as AddContactACtivity).mOnSaveClickListener = this
}

override fun onSaveClicked(contact: Contact) {
// Whatever you want to do with the data
}

}

在AddContactActivity

class AddContactActivity {
var mOnSaveClickListener : OnSaveClickListener? = null
private void whenYouClickSave(contact: Contact){
mOnSaveClickListener?.onSaveClicked(contact)
}

最新更新