Android-Dagger将共享视图模型注入到片段

Android-Dagger将共享视图模型注入到片段,android,android-fragments,mvvm,viewmodel,dagger-2,Android,Android Fragments,Mvvm,Viewmodel,Dagger 2,我需要用共享ViewModel绑定两个片段 组成部分: void injectMovieFragment(MovieFragment movieFragment); void injectMovieCollectionFragment(MovieCollectionFragment movieCollectionFragment); SharedViewModelModule: @Provides MovieSharedViewModel provideMovieSharedViewMod

我需要用共享ViewModel绑定两个片段

组成部分:

void injectMovieFragment(MovieFragment movieFragment);
void injectMovieCollectionFragment(MovieCollectionFragment movieCollectionFragment);  
SharedViewModelModule:

@Provides
MovieSharedViewModel provideMovieSharedViewModel(Fragment fragment) {

    return new ViewModelProvider(fragment.requireActivity()).get(MovieSharedViewModel.class);

}  
此代码导致Dagger上出现MissingBinding错误(无法从MovieFragment/MovieCollectionFragment获取片段)

SharedViewModelModule v2:

@Provides
MovieSharedViewModel provideMovieSharedViewModelToMovieFragment(MovieFragment fragment) {

    return new ViewModelProvider(fragment.requireActivity()).get(MovieSharedViewModel.class);

}

@Provides
MovieSharedViewModel provideMovieSharedViewModelToMovieCollectionFragment(MovieCollectionFragment fragment) {

    return new ViewModelProvider(fragment.requireActivity()).get(MovieSharedViewModel.class);

}  
此代码导致Dagger上出现重复绑定错误

要在不使用Dagger2注入的情况下获得sharedViewModel,我只需使用:

sharedViewModel = new ViewModelProvider(requireActivity()).get(MovieSharedViewModel.class);  
在由MovieFragment和MovieCollectionFragment类创建的onviewInside中,这很好地工作。

如何使用Dagger 2正确注入此共享ViewModel?

如果您可以在片段中添加使用注入的方式,那就太好了。从错误来看,似乎您没有将创建的片段注入匕首图

这是必需的,因为片段通常由android创建,您需要向dagger提供创建的实例

我使用的方法类似于从我的
CustomApplication
类中公开我的
DaggerComponent
(您也可以通过活动公开组件)。 然后在片段的
onAttach
函数中,像这样注入创建的片段

override fun onAttach(context: Context) {
        super.onAttach(context)
        (context.applicationContext as CustomApplication).applicationComponent.injectMovieFragment(this)
}
这将修复错误。请提供您是如何使用片段注入的,以获得更完整的答案