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

How can we achieve Shared View Model communication between a Fragment and Activity, where the Activity is not the Parent

鉴于 Activity 不是父 Activity。

,我正在尝试实现片段到 Activity 的通信

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

我考虑过使用 Application Context 作为所有者,但我觉得这对于这样的任务来说有点矫枉过正,而且当其他模块被添加到项目中时,它可能会产生一些后果。

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

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

interface OnSaveClickListener {
    fun onSaveClicked(contact: Contact)
}

现在在 ContactListFragment 中 class

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)
   }