Это потому, что у вас нет области действия и управления этой областью. Вам нужно создать прицел самостоятельно или использовать уже предоставленный кинжалом. Здесь, поскольку это ведущий, я думаю, это может быть Reusable
область действия или Singleton
. Однако Singleton
оказывает влияние на производительность, что может быть нежелательным.
Следующим важным моментом является то, что вам нужно понимать, что, хотя экземпляр компонента одинаков, предоставляемая привязка будет такой же (исключая случай области действия Reusable
). Другими словами, области предоставляют способ сказать кинжалу - «пока этот компонент жив и его область действия - X, тогда все экземпляры, ограниченные X, будут одинаковыми». Вот что я имею в виду в коде:
@Scope
@Documented
@Retention(RUNTIME)
public @interface PresenterScope {}
@Module
public class ArticleListFragmentModule {
@Provides
@PresenterScope
ArticlesContract.Presenter provideArticlesPresenter(ArticlesPresenter presenter) {
return presenter;
}
}
Я не знаю, как вы настроили свой компонент, но вам нужно будет также пометить его с помощью PresenterScope
. Теперь нужно просто убедиться, что при вводе ArticleListFragment
и ArticlesAdapter
вы будете использовать один и тот же экземпляр компонента. Если вы перестроите компонент, то экземпляр презентатора будет другим.
Помните, что Reusable
немного отличается, но он должен здесь соответствовать вашим потребностям, поскольку докладчик не должен держать состояние.
Надеюсь, это поможет