Ну, я нашел только частично решение этого вопроса.Это использование презентатора как абстрактного val в базовом классе.Это позволит использовать методы Presenter в базовом классе, но я все еще должен использовать inject()
в каждом подклассе для инициализации.Пример:
abstract class BasePresenterFragment<P : BasePresenter> : BaseFragment() {
abstract val presenter: P
override fun onStart() {
super.onStart()
presenter.subscribe()
}
override fun onStop() {
super.onStop()
presenter.unSubscribe()
}
}
И подкласс:
class HomeFragment : BasePresenterFragment<HomeContract.Presenter>(), HomeContract.View {
...
override val presenter: HomeContract.Presenter by inject()
...
}