Android 在片段、主活动和导航菜单之间重用共享ViewModel实例,以显示不同的信息

Android 在片段、主活动和导航菜单之间重用共享ViewModel实例,以显示不同的信息,android,mvvm,navigation,fragment,android-viewmodel,Android,Mvvm,Navigation,Fragment,Android Viewmodel,我正在按照单活动主片段方法开发我的应用程序。我有两个片段,ShowProfileFragment和EditProfileFragment,它们共享一个ProfileViewModel来显示用户信息并对其进行编辑EditProfileFragment只能通过ShowProfileFragment访问ShowProfileFragment可从导航菜单访问 我还有一个导航菜单,显示用户的姓名和电子邮件,它通过数据绑定来检索这些信息,观察ProfileViewModel中的相应字段。假设用户已通过身份验

我正在按照单活动主片段方法开发我的应用程序。我有两个片段,
ShowProfileFragment
EditProfileFragment
,它们共享一个
ProfileViewModel
来显示用户信息并对其进行编辑
EditProfileFragment
只能通过
ShowProfileFragment
访问<代码>ShowProfileFragment可从导航菜单访问

我还有一个导航菜单,显示用户的姓名和电子邮件,它通过数据绑定来检索这些信息,观察
ProfileViewModel
中的相应字段。假设用户已通过身份验证,则会在
main活动中创建
ProfileViewModel
,以便在应用程序启动时从导航菜单中正确查看用户信息

到目前为止,我的应用程序具有以下结构:

MainActivity (A)      uses ProfileViewModel

ShowProfileFragment   uses ProfileViewModel
  |-> EditProfileFragment   uses ProfileViewModel

NavigationDrawer      uses ProfileViewModel
假设我在
UserListFragment
中有一个用户列表(RecyclerView)。现在,应用程序结构如下所示:

MainActivity (A)           uses ProfileViewModel

ShowProfileFragment        uses ProfileViewModel
  |-> EditProfileFragment  uses ProfileViewModel
UserListFragment           

NavigationDrawer           uses ProfileViewModel
问题是,我需要重用
ShowProfileFragment
来显示当前选定的用户详细信息。到目前为止,我实例化了
ProfileViewModel
的一个实例,该实例具有与
MainActivity
相同的生命周期,因此我可以从导航菜单中正确显示经过身份验证的用户信息

我的想法是将
ProfileViewModel
仅用于
ShowProfileFragment
(和
EditProfileFragment
)和
UserListFragment
,这样,当我从导航菜单访问
ShowProfileFragment
时,我会传递一个布尔值作为参数,表示导航从导航菜单开始,显示完整的用户详细信息并启用到
EditProfileFragment
的导航。从用户列表访问
ShowProfileFragment
时,
ShowProfileFragment
将显示较少的信息并禁用
EditProfileFragment
导航路径。导航菜单中的用户详细信息将使用不同的代码进行管理,而不涉及
ProfileViewModel

我真的不知道这是否是一个好的解决方案,因为我对安卓开发相对较新。有什么我遗漏的吗?有更好的解决办法吗