小编Ser*_*tun的帖子

ViewModel for Fragment而不是访问Activity ViewModel?

问题非常简单.问题在于使用ViewModels,LiveData和其他相关的生命周期感知的arch方法.
我有一个带有NavDrawer的Activity,可以在里面切换片段.
而且我有一个案例,当屏幕上同时出现两个片段时 - 这将是主要的痛苦.One Fragment有一个嵌套的ViewPager Fragments(不要问为什么).另一个片段只是在用户执行某些操作时从第一个获取信息.这只是通过共享活动视图模型来实现的.但是应用程序本身有很多业务逻辑,随着视图模型越来越大,视图模型越来越大.
我想问的是 - 不是收据或规则如何解决这个问题,或者可能是如何通过修复整个项目结构来解决这个问题.我想问一下建议如何将android.arch.lifecycle样式中的MVVM方法应用于我的用例.
我没有看到更复杂的东西,只是在Fragments之间共享Activity ViewModel.但很常见,那不是治愈方法. 在此输入图像描述

你在这里可以看到什么 - 实际上是一团糟.关键是所有人都在分享ActivityViewModel.来自FirstFragment的连接(聚合)意味着ViewPager内部FirstFragment正在启动,ChildFragments并且它们也在使用相同的ActivityViewModel(杀死我).因此,每个人都在使用一个共享的ViewModel.
我的建议是为每个Layer添加一个ViewModel.因此,Activity/Fragments/ChildFragments拥有自己的ViewModels.但是这里出现了什么 - 我们应该如何沟通呢?
可能的解决方案 :

  • 每个组件有两个ViewModel.一个ViewModel将处理/委托业务逻辑,另一个将进行通信.每个组件有两个视图模型 - 不太好,是吗?
  • 有旧的界面(请不!)
  • 其他解决方法 - 比如DB/SharedPrefs/Realm改变了监听器和事件总线(我太老了:()).

  • 你的解决方案!

我会说以上所有都打破了很多设计原则,所以我该怎么办?我该怎么走出这个烂摊子?这里有什么Uncle Bob或另一个superhero可以提供帮助吗?

PS - 好吧,创建UML或其他图表不是我的强项.对不起.
PPS - 我知道谷歌 样本.

android mvvm android-fragments kotlin android-architecture-components

14
推荐指数
3
解决办法
4851
查看次数

缺少类LiveDataReactiveStreams

我正在尝试使用新的Android架构组件.我想用LiveDataReactiveStreams将Rx Flowable转换为LiveData但是缺少该类.

这是我的依赖项:

compile "android.arch.lifecycle:runtime:1.0.0-alpha1" compile "android.arch.lifecycle:extensions:1.0.0-alpha1" kapt "android.arch.lifecycle:compiler:1.0.0-alpha1"

有任何想法吗?

java android rx-java2 android-architecture-components

6
推荐指数
1
解决办法
1451
查看次数