【发布时间】:2020-05-13 16:37:27
【问题描述】:
我的项目(MVVM,Jetpack 导航)中有 DialogFragment,它从不同的地方调用并代表签名画布。导航中的相关部分:
<dialog
android:id="@+id/signPadDialogFragment"
android:name="com.ui.signpad.SignPadDialogFragment"
android:label="SignPadDialogFragment" />
<fragment
android:id="@+id/loginFragment"
android:name="com.ui.login.LoginFragment"
android:label="@string/login_label"
tools:layout="@layout/login_fragment">
<action
android:id="@+id/action_loginFragment_to_currentJobsFragment"
app:destination="@id/currentJobsFragment" />
<action
android:id="@+id/action_loginFragment_to_signPadDialogFragment"
app:destination="@id/signPadDialogFragment" />
<fragment
android:id="@+id/jobDetailFragment"
android:name="com.ui.jobdetails.JobDetailFragment"
android:label="job_detail_fragment"
tools:layout="@layout/job_detail_fragment" >
<action
android:id="@+id/action_jobDetailFragment_to_signPadDialogFragment"
app:destination="@id/signPadDialogFragment" />
</fragment>
并导航操作:
mainActivityViewModel.repository.navigationCommands.observe(this, Observer { navEvent ->
navEvent.getContentIfNotHandled()?.let {
navController.navigate(it as NavDirections)
}
})
所以,我的问题是:使用 Jetpack 导航和 MVVM 处理回调的正确方法是什么? 我看到两个可能的解决方案和相关问题:
我可以将数据从对话框片段传递给 ViewModel -> 存储库(在这种情况下:如何区分在对话框范围内启动对话框的操作?)
或者在 MainActivity 中获取回调(如何?)
提前致谢
【问题讨论】:
标签: android mvvm android-dialogfragment android-jetpack