Arello-Mobile / Moxy

Moxy is MVP library for Android
https://github.com/Arello-Mobile/Moxy/wiki
MIT License
1.61k stars 207 forks source link

Типизированный презентер #261

Open Everhustle opened 5 years ago

Everhustle commented 5 years ago

Объявление моего презентера выглядит вот так:


class SearchPresenter<T>(val network: Network) : BasePresenter<SearchView<T>>() {
//pass
}

T - data clas который будет передан. Т может иметь один из 5 типов data class не имеющих общих предков. Тип data class известен только фрагменту, который инстанциирует этот презентер.

Вот так работаю с презентером в одном из фрагментов

class SearchNewsFragment : SearchBaseFragment(), NewsView<NewsShortEntity> {

    @InjectPresenter
    lateinit var presenter: SearchPresenter<NewsShortEntity>

  @ProvidePresenter
    fun provideSearchPresenter(): SearchPresenter<NewsShortEntity> {
        return SearchPresenter(network)
    }

Интерфейс:


interface NewsView<T> : SearchView<T> {
//pass
}

При сборке получаю

error: You can not use @InjectPresenter in classes that are not View, which is typified target Presenter public SearchPresenter presenter;

Как победить?

ReCursia commented 5 years ago

Насколько я понял интерфейс SearchView должен расширять интерфейс MvpView, если это не так, возможно проблема кроется в этом