Daga 2 inyectando el model de vista de actividad en fragment

(usando kotlin) Tengo una aplicación que usa una actividad de configuration con 2 fragments. Me gustaría que ambos obtuvieran la misma instancia de SettingsViewModel que la actividad. Supongo que hay un problema de scope que me estoy perdiendo.

Primero, tengo el ViewModelModule estándar:

 @Module abstract class ViewModelModule { @Binds @IntoMap @ViewModelKey(SettingsViewModel::class) abstract fun bindSettingsViewModel(viewModel: SettingsViewModel): ViewModel @Binds abstract fun bindViewModelFactory(factory: MyViewModelFactory): ViewModelProvider.Factory } 

Enloop mis actividades en:

 @Module abstract class AndroidBindingModule { @PerActivity @ContributesAndroidInjector(modules = [SettingsActivityModule::class]) abstract fun contributeSettingsActivity(): SettingsActivity } 

Con todo lo demás en su lugar, esto funciona bien y SettingsActivity obtiene una instancia de SettingsViewModel . SettingsActivityModule agrega lo siguiente:

 @PerFragment @ContributesAndroidInjector abstract fun contributeMainSettingsFragment(): MainSettingsFragment @PerFragment @ContributesAndroidInjector abstract fun contributeDebugSettingsFragment(): DebugSettingsFragment 

Parece que ambos fragments tienen los inyectores llamados (revisé el depurador y se llama a AndroidSupportInjection.inject(fragment) ). Los fragments incluyen:

 @Inject lateinit var mainViewModel: SettingsViewModel 

Pero en el fragment onCreate() veo que mainViewModel sigue siendo nulo. ¿Hay algo especial que deba hacer aquí para evitar llamar a ViewModelProviders.of(activity)[SettingsViewModel::class.java] y, en su lugar, inyectar el model de vista?