Как я могу добавить модель представления в модуле? - PullRequest
0 голосов
/ 27 марта 2020

Как в Dagger добавить модель в модуль? Например, я добавил докладчика следующим образом:

@Module
class AboutModule(val appContext: Context) {

    @FragmentScope
    @Provides
    fun providePresenter(): AboutListContract.Presenter {
        return AboutListPresenter(appContext = appContext)
    }
}

Теперь я хочу добавить свою модель просмотра, также с appContext.

class AboutViewModel(val appContext: Context): ViewModel() {

ОБНОВЛЕНИЕ: Могу ли я добавить свой вид модели что-то вроде этого?

@Module

    class AboutModule(val appContext: Context) {

        @FragmentScope
        @Provides
        fun provideModel(model: AboutViewModel): ViewModel {
            return AboutViewModel(appContext = appContext)
        }
    }

Ответы [ 2 ]

1 голос
/ 27 марта 2020

ViewModels вводятся с помощью Dagger Multibindings

см. Эту статью среднего: https://medium.com/chili-labs/android-viewmodel-injection-with-dagger-f0061d3402ff

context можно ввести, предоставив в AppModule класс.

0 голосов
/ 30 марта 2020

Я решил свою проблему следующим решением:

@Module
class AboutModule(val appContext: Context) {

    @FragmentScope
    @Provides
    fun provideFactory(): AboutViewModelFactory {
        return AboutViewModelFactory(appContext)
    }
}

И во фрагменте напишите что-то вроде этого: class AboutFragment: BaseFragment (), OnItemClickListener {

lateinit var viewModel: AboutViewModel
@Inject lateinit var viewModelFactory: AboutViewModelFactory

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    injectDependencies()

    viewModel = ViewModelProviders
        .of(this, viewModelFactory)
        .get(AboutViewModel::class.java)
}

private fun injectDependencies() {
    activity?.let {
        DaggerAboutComponent.builder().aboutModule(AboutModule(it)).build().inject(this)
    }
}

Хороший совет: { ссылка }

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...