如何在依赖SavedStateHandle的AndroidViewModel中注入依赖项?

问题描述 投票:0回答:1

假设这样的视图模型:

public class FooViewModel extends AndroidViewModel {

    @Inject public FooViewModel(Application app, SavedStateHandle handle, Bar bar) {
        // ...
    }
}

我想使用Dagger 2注入Bar。我正在Android上进行开发。

根据SavedStateHandle docs

如果要在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 ...

android dagger-2 android-architecture-components android-architecture-lifecycle
1个回答
0
投票
要提供Bar,您需要自定义实现final
© www.soinside.com 2019 - 2024. All rights reserved.