如何为Android中的许多类创建通用ViewModelModule?

如何为Android中的许多类创建通用ViewModelModule?,android,dependency-injection,dagger-2,Android,Dependency Injection,Dagger 2,我正在使用Dagger2将我的ViewModel注入到我的片段中。对于我拥有的每个片段ViewModelModule,如下所示: public abstract class GameViewModelModule { @Binds abstract ViewModelProvider.Factory bindAppViewModelFactory(AppViewModelFactory factory); @Binds @IntoMap @ViewMod

我正在使用Dagger2将我的
ViewModel
注入到我的片段中。对于我拥有的每个片段
ViewModelModule
,如下所示:

public abstract class GameViewModelModule {
    @Binds
    abstract ViewModelProvider.Factory bindAppViewModelFactory(AppViewModelFactory factory);

    @Binds
    @IntoMap
    @ViewModelKey(GameViewModel.class)
    abstract ViewModel provideGameViewModel(GameViewModel viewModel);
}

我怎样才能创建一个泛型类,而不是为每个片段创建一个单独的
ViewModelModule

只需对所有片段使用相同的模块,每个视图模型使用一个
@Binds
。@Nicolas谢谢Nicolas,但是我没有办法创建泛型类吗?没有。
@ViewModelKey
有一个类参数,使用泛型类型来获得它的唯一方法是拥有一个具体化的类型,这只适用于内联函数,而不适用于类。有些不相关,但我要做的是创建一个
ViewModelFragment
类,用视图模型工厂注入自己。这从你的每个片段中提取了一些代码。@Nicolas我不确定我是否理解你所说的“用视图模型工厂注入自身”的意思。我可以为所有类创建/注入泛型ViewModel吗?不,没有泛型,与您的问题无关。我只是想给你一个小提示,减少一点片段中所需的代码。只需对所有片段使用相同的模块,每个视图模型使用一个
@Binds
。@Nicolas谢谢Nicolas,但我没有办法创建泛型类吗?没有。
@ViewModelKey
有一个类参数,使用泛型类型获取该参数的唯一方法是使用一个只有内联函数才能使用的泛型类型,不是上课。有些不相关,但我要做的是创建一个
ViewModelFragment
类,用视图模型工厂注入自己。这从你的每个片段中提取了一些代码。@Nicolas我不确定我是否理解你所说的“用视图模型工厂注入自身”的意思。我可以为所有类创建/注入泛型ViewModel吗?不,没有泛型,与您的问题无关。我只是想给你一个小提示,减少一点片段中所需的代码。