android - 重用片段、主活动和导航菜单之间的共享 ViewModel 实例以显示不同的信息
问题描述
我正在按照 Single Activity Main Fragments 方法开发我的应用程序。我有两个片段,ShowProfileFragment
并且EditProfileFragment
,它们都共享一个ProfileViewModel
来显示用户信息并对其进行编辑。EditProfileFragment
只能通过 访问ShowProfileFragment
。ShowProfileFragment
可从导航菜单访问。
我还有一个导航菜单,它显示用户的姓名和电子邮件,它通过观察ProfileViewModel
. 假设用户已经通过身份验证,ProfileViewModel
正在创建 ,MainActivity
以便我可以在应用程序启动时从导航菜单中正确查看用户信息。
到目前为止,我的应用程序具有以下结构:
MainActivity (A) uses ProfileViewModel
ShowProfileFragment uses ProfileViewModel
|-> EditProfileFragment uses ProfileViewModel
NavigationDrawer uses ProfileViewModel
假设我在UserListFragment
. 现在应用程序结构将是这样的:
MainActivity (A) uses ProfileViewModel
ShowProfileFragment uses ProfileViewModel
|-> EditProfileFragment uses ProfileViewModel
UserListFragment
NavigationDrawer uses ProfileViewModel
问题是,我需要重用ShowProfileFragment
来显示当前选定的用户详细信息。到目前为止,我实例化了一个ProfileViewModel
具有相同生命周期的实例,MainActivity
以便我可以从导航菜单中正确显示经过身份验证的用户信息。
我的想法是将ProfileViewModel
only 用于ShowProfileFragment
(and EditProfileFragment
) ,UserListFragment
这样当我ShowProfileFragment
从导航菜单访问时,我将作为参数传递一个布尔值,表示导航从导航菜单开始,显示完整的用户详细信息并启用导航EditProfileFragment
. _ 当ShowProfileFragment
从用户列表访问时,ShowProfileFragment
将显示较少的信息并禁用EditProfileFragment
导航路径。导航菜单中的用户详细信息将使用不同的代码进行管理,而不涉及ProfileViewModel
.
我真的不知道这是否是一个好的解决方案,因为我对 Android 开发比较陌生。有什么我想念的吗?有更好的解决方案吗?
解决方案
推荐阅读
- reactjs - 无法用浅层和酶测试 onChange 模拟方法
- sql - PLSQL Oracle 触发器,按 id 对行中的金额求和
- php - 如何将存储中的文件附加到邮件 - laravel 6
- javascript - Javascript 中的令牌生成熵等价物
- usb - STM32 bluepill USB 引导加载程序 DFU
- ruby-on-rails - Rails 根据当前参数调整参数和类
- c# - XmlReader 值不通过我的 If 语句,但它应该
- reactjs - “登录”类型上不存在属性“handleSubmit”.ts(2339)
- python - 导入flask-WTF时出现AttributeError
- sorting - 如何显示与 Frobenius 问题和 Shell 排序的关系?