android - Dagger 2 - 创建了同一个 View 模型的两个实例

标签 android viewmodel dagger-2 dagger

我试图在我的 Android 应用程序中实现 Dagger 2,但遇到了这个问题: 我使用的 ActivityModels 是通过 ViewModelProvider.Factory 的实现创建的(如 example here )。我通过注入(inject)工厂和调用将模型附加到 Activity 中:

viewModel = ViewModelProviders.of(this, viewModelFactory).get(MyActivityViewModel.class);

在应用程序的另一部分,我尝试使用 Command 类来更改模型,因此我将 MyActivityViewModel 直接注入(inject)到它。

@Inject
public SearchCommand(MyActivityViewModel viewModel) {
    super(viewModel);
}

问题:注入(inject)的 ViewModel 是 View 模型的新实例,与 Activity 中实例化的实例不同。无论我尝试什么,我都无法解决这个问题……有什么想法吗?

最佳答案

我遇到了同样的问题,但是按照 ViewModelProviders 的代码,我只为 fragment 更改了 getActivity() 的 ViewModelProviders.of(this, viewModelFactory) 的第一个参数。结果行是

viewModel = ViewModelProviders.of(getActivity(), viewModelFactory).get(MyActivityViewModel.class);

关于android - Dagger 2 - 创建了同一个 View 模型的两个实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48241802/

相关文章:

asp.net-mvc - 验证嵌套模型

c# - 是否可以使非静态类的实例可供整个 WPF 应用程序使用?

kotlin - 带有 Kotlin 类委托(delegate)的 Dagger 构造函数注入(inject)

android - 为什么 Dagger 无法识别 AppModule 中的@Provides?

android - 如果没有 @Inject 构造函数或来自 @Provides- 或 @Produces- 注释的方法,则不能提供改造

Android gradle 找不到方法 'org.grade.api.internal.file.DefaultSourceDirectorySet'

android - 如何检查Listview是否为空

Android fragment 事务 : How to generate an overlay slide in and move existing Fragement to left

android - 解析 XML 时出错 : unbound prefix on custom LinearLayout

asp.net-mvc - ASP.net MVC - ViewModel 对象和 session 变量