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