我对Android特定模式的问题是,如果你使用他们的AndroidInjection类,除了使用Application Component之外,除了Activities/ Fragments/自定义视图/适配器之外,成员无法注入其他对象.这是因为你无法获得用于注入/ 的Subcomponent(AndroidInjector)的引用.这使得注入Dialogs(如果你使用).ActivitiesFragmentsDialogFragments
该AndroidInjection级似乎只支持Android核心类型.
我尝试使用类似于Architecture Guide的 Dagger 2将存储库注入我的ViewModel .但是,我的存储库值始终为null.
这是我的ViewModel
public class MainActivityViewModel extends ViewModel {
@Inject
public CustomRepository repository;
private MutableLiveData<List<CustomItem>> items = new MutableLiveData<>();
public void initModel(Date month){
try {
items = repository.getItems(month);
} catch (Exception e) {
items = new MutableLiveData<>();
}
}
public MutableLiveData<List<CustomItem>> getItems() {
return items;
}
}
Run Code Online (Sandbox Code Playgroud)
我的AppModule
@Module
public class AppModule {
Application mApplication;
public AppModule(Application application) {
mApplication = application;
}
@Provides
@Singleton
Application providesApplication() {
return mApplication;
}
@Provides
@Singleton
public ItemDao provideItemDao(AppDatabase …Run Code Online (Sandbox Code Playgroud)