Как уже упоминалось в заголовке, у меня проблема с инъекцией Dagger 2. У меня есть одно действие и несколько фрагментов. Я пытаюсь поделиться ViewModel активности с каждым дочерним фрагментом. Я основал свое решение на примере задачи Android Architecture от Google. Я создал ViewModelFactory как
ViewModelFactory
Если вы перейдете по ссылке, вы увидите, что в их решении есть отдельный ViewModel для каждого действия и фрагмента. Они не показывают, как бороться со сценарием ios, как мой. Моя реализация ActivityModule выглядит следующим образом:
@Module
abstract class SampleModule {
@ContributesAndroidInjector(
modules = [
ViewModelBuilder::class
]
)
internal abstract fun sampleActivity(): SampleActivity
@Binds
@IntoMap
@ViewModelKey(SampleViewModel::class)
abstract fun bindViewModel(viewModel: SampleViewModel): ViewModel
}
Моя активность расширяется DaggerAppCompatActivity
и фрагмент DaggerFragment
, и как следствие, моя инъекция модели представления выглядит просто как
class SampleActivity : DaggerAppCompatActivity() {
@Inject
lateinit var viewModel: SampleViewModel
...
Я могу ' не могу найти веб-решение моей проблемы. Я довольно новичок в Dagger. Я пытался реализовать субкомпонент, но все же он не работает, потому что все примеры, которые я искал до сих пор, не использовали DaggerApplication
, DaggerAppCompatActivity
и мой способ инъекции. Пожалуйста, предложите какое-либо решение или, если подкомпонентный путь правильный, пожалуйста, покажите мне, как это сделать, если это возможно в моей текущей архитектуре.
Большое спасибо заранее.