Android 在对话框片段上保存用户输入后,无法更新父列表

Android 在对话框片段上保存用户输入后,无法更新父列表,android,android-databinding,android-viewmodel,android-architecture-navigation,android-mvvm,Android,Android Databinding,Android Viewmodel,Android Architecture Navigation,Android Mvvm,我正在使用MVVM和导航组件构建一个示例应用程序。下面是导航图 <navigation xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/nav_graph_sample

我正在使用MVVM和导航组件构建一个示例应用程序。下面是导航图

<navigation xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/nav_graph_sample" app:startDestination="@id/FHomePage">
<fragment
        android:id="@+id/FHomePage"
        android:name="com.sample.FHomePage"
        android:label="layout_home_page" tools:layout="@layout/layout_layout_home_page">
    <action
            android:id="@+id/action_FHomePage_to_popup"
            app:destination="@id/popupDialog"
            app:enterAnim="@anim/nav_default_enter_anim"
            app:exitAnim="@anim/nav_default_exit_anim"
            app:popEnterAnim="@anim/nav_default_pop_enter_anim"
            app:popExitAnim="@anim/nav_default_pop_exit_anim"
            app:popUpTo="@+id/FHomePage" />
</fragment>
<dialog
        android:id="@+id/popupDialog"
        android:name="com.sample.PopupDialog"
        android:label="layout_pop_up_dialog"
        tools:layout="@layout/layout_pop_up_dialog" />
viewModelObj是在弹出对话框中再次启动的主页ViewModel实例

private val viewModelObj by lazy {
    ViewModelProviders.of(this, factory).get(FHomePage::class.java)
}
在调试时,单击弹出对话框上的“保存”按钮时,它将表单数据传递给ViewModel,并将值发布到实时数据。但是,recyclerview适配器没有更新列表。你知道什么可能会阻止它吗


或者我需要在从对话框返回主页的导航图上添加一个新操作,并在捆绑包中包含表单数据吗?

因此,您的两个片段都使用相同的
ViewModelProviders。关于(工厂)
code?对话框片段是一个简单的表单,其输入数据将由父片段使用,我想尝试一下使用相同的ViewModel。我们需要单独的VM吗?
DialogFragment
Fragements
应该使用HomeViewModel的共享viewmodel实例,使用调试器确保它是相同的实例。
<androidx.recyclerview.widget.RecyclerView
            android:id="@+id/list_items"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            app:data="@{viewModel.listItemsLiveData}"
            />
@BindingAdapter("data")
@JvmStatic fun setItems(recyclerView: RecyclerView, resource: List<FormEntity>?) {
    with(recyclerView.adapter as CustomListAdapter) {
        resource?.let { updateData(it) }
    }
}
fun updateData(items: List<FormEntity>) {
    this.items.clear()
    this.items.addAll(items)
    notifyDataSetChanged()
}
btn_save.setOnClickListener {
        viewModelObj.saveForm(
            value1,
            value2
            value3
        )
        dismiss()
}
private val viewModelObj by lazy {
    ViewModelProviders.of(this, factory).get(FHomePage::class.java)
}