Как внедрить контекст активности в модули с библиотекой зависимостей koin - PullRequest
0 голосов
/ 16 мая 2019

У меня есть модуль Util, как показано ниже, для выполнения некоторых его функций требуется контекст активности [не контекст приложения].

Как мне вставить контекст активности в него?

class MainPresenter internal constructor(private val iMainActivity: IActivity)  : IPresenter {

    //dependencies
    private val context = iMainActivity as AppCompatActivity

    private var util = UtilModule(context)         //<-- inject this
    private var httpClient = HttpClient(context)   //<-- inject this

1 Ответ

1 голос
/ 26 мая 2019

В этом случае, как сказал @ commonsware , не очень хорошо, что класс докладчика зависит от активности.Лучшее решение с впрыском может быть похоже на следующую структуру:

class IActivity{

    private val utilModule: UtilModule by lazy { UtilModule(this@IActivity) }
    private val httpClient: HttpClient by lazy { HttpClient(this@IActivity) }

    private val presenter: MainPresenter by inject{ parametersOf(utilModel, 
    httpClient) }

}

class MainPresenter(private val util: UtilModule, private val httpClient: HttpClient)

Ваш модуль:

single { MainPresenter( it[0], it[1] ) }
...