Java Android dagger2使用Factory将意图注入viewModel
作为一个例子,我正在使用Google示例-(我使用java版本,可以找到) 我们希望实现的目标:Java Android dagger2使用Factory将意图注入viewModel,java,android,dagger-2,android-architecture-components,android-viewmodel,Java,Android,Dagger 2,Android Architecture Components,Android Viewmodel,作为一个例子,我正在使用Google示例-(我使用java版本,可以找到) 我们希望实现的目标: 带着额外的意图开始活动 向viewModel构造函数中注入额外的 我的活动(在我想通过的地方)模块: @模块 公共抽象类AddEditTaskModule{ @提供 @可空 静态字符串ProvideTaskKid(AddEditTaskActivity活动){ 返回activity.getIntent().getStringExtra(AddEditTaskActivity.EDIT_TASK_ID
@模块
公共抽象类AddEditTaskModule{
@提供
@可空
静态字符串ProvideTaskKid(AddEditTaskActivity活动){
返回activity.getIntent().getStringExtra(AddEditTaskActivity.EDIT_TASK_ID);
}
@贡献Android注射器
抽象AddEditTaskFragment contributedEdittaskFragment();
@束缚
@英托马普
@ViewModelScope(AddEditTaskViewModel.class)
抽象视图模型bindAddEditTaskViewModel(AddEditTaskViewModel视图模型);
}
我的工厂:
公共类ViewModelFactory实现ViewModelProvider.Factory{
私人最终地图调出,它比我想象的要简单
对于常见视图模型:
从ViewModelFactory中删除@Singleton
注释
将@Singleton
添加到ViewModelModule
@Binds
@独生子女
抽象ViewModelProvider.Factory bindViewModelFactory(ViewModelFactory);
对于需要使用额外注入的ViewModels:
活动模块:
@提供
@可空
静态字符串ProvideTaskKid(AddEditTaskActivity活动){
返回activity.getIntent().getStringExtra(AddEditTaskActivity.EDIT_TASK_ID);
}
@束缚
@命名(AddEditTaskViewModel.TAG)
抽象ViewModelProvider.Factory bindAddEditTaskViewModelFactory(ViewModelFactory工厂);
而不是在活动/片段中使用:
@Inject
@命名(AddEditTaskViewModel.TAG)
工厂视图模型工厂;
调出后,它比我想象的要简单
对于常见视图模型:
从ViewModelFactory中删除@Singleton
注释
将@Singleton
添加到ViewModelModule
@Binds
@独生子女
抽象ViewModelProvider.Factory bindViewModelFactory(ViewModelFactory);
对于需要使用额外注入的ViewModels:
活动模块:
@提供
@可空
静态字符串ProvideTaskKid(AddEditTaskActivity活动){
返回activity.getIntent().getStringExtra(AddEditTaskActivity.EDIT_TASK_ID);
}
@束缚
@命名(AddEditTaskViewModel.TAG)
抽象ViewModelProvider.Factory bindAddEditTaskViewModelFactory(ViewModelFactory工厂);
而不是在活动/片段中使用:
@Inject
@命名(AddEditTaskViewModel.TAG)
工厂视图模型工厂;