假设这样的视图模型:
public class FooViewModel extends AndroidViewModel {
@Inject public FooViewModel(Application app, SavedStateHandle handle, Bar bar) {
// ...
}
}
我想使用Dagger 2注入Bar
。我正在Android上进行开发。
如果要在
SavedStateHandle
的构造函数中接收此对象,则应使用SavedStateViewModelFactory
。>但是,
ViewModel
表示工厂为SavedStateViewModelFactory
docs,这意味着我也无法在其中注入SavedStateViewModelFactory
。
到目前为止,我一直在通过二传手进行注射:
final
有更好的方法吗?
我想使用构造函数注入,将Bar
实例变量标记为 @Provides
FooViewModel provideFooViewModel(ViewModelStoreOwner owner, Bar bar) {
FooViewModel viewModel = new ViewModelProvider(owner).get(FooViewModel.class);
viewModel.setBar(bar);
return viewModel;
}
并消除设置器。
假设这样的视图模型:公共类FooViewModel扩展了AndroidViewModel {@Inject public FooViewModel(Application app,SavedStateHandle handle,Bar bar){// ...}} I ...
Bar
,您需要自定义实现final
。