我正在努力实现Fragment到Activity的通信,因为Activity不是父Activity。
所以,我有一个MainActivity
,它有一个叫做ContactListFragment
的片段,当点击MainActivity
的BottomNavigationView
上的添加按钮时,我正在打开另一个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)
}