Я пытаюсь вставить свой нестандартный адаптер утилизатора в мой фрагмент.Адаптер содержит интерфейс (ClickHandler
), который реализует мой фрагмент.Тем не менее, я не могу понять, как ввести интерфейс.Ниже показано, как я пытаюсь внедрить его.
Вот как я пытаюсь внедрить мой ClickHandler
интерфейс:
@Module
public abstract class StreamsFragmentModule
{
@Binds
abstract ClickHandler bindStreamsFragment(StreamsFragment streamsFragment);
@Provides
static ClickHandler bindClickHandler(StreamsFragment streamsFragment)
{
return streamsFragment;
}
}
Вот как я использую / определяю адаптер:
public class StreamsFragment extends RecyclerFragment
{
@Inject
RecyclerViewBindingAdapter<BaseViewModel> bindingAdapter;
}
public abstract class RecyclerFragment extends Fragment implements ClickHandler
{
public static class RecyclerViewBindingAdapter<T extends BaseViewModel> extends RecyclerView
.Adapter<RecyclerViewBindingAdapter.BindingViewHolder>
{
private final ClickHandler clickHandler;
private List<T> viewModels;
@Inject
public RecyclerViewBindingAdapter(ClickHandler clickHandler)
{
this.clickHandler = clickHandler;
}
}
И вот ошибка, которую я получаю:
AppComponent.java:17: error: [Dagger/DependencyCycle] Found a dependency cycle:
public interface AppComponent
^
ClickHandler is injected at
RecyclerFragment.RecyclerViewBindingAdapter(clickHandler)
RecyclerFragment.RecyclerViewBindingAdapter<BaseViewModel> is injected at
StreamsFragment.bindingAdapter
StreamsFragment is injected at
StreamsFragmentModule.bindClickHandler(streamsFragment)
ClickHandler is injected at
RecyclerFragment.RecyclerViewBindingAdapter(clickHandler)
RecyclerFragment.RecyclerViewBindingAdapter<BaseViewModel> is injected at
StreamsFragment.bindingAdapter
FavoritesFragment is injected at
dagger.android.AndroidInjector.inject(T) [AppComponent → ActivityBindingModule_ContributeMainActivityInjector.MainActivitySubcomponent → MainActivityModule_ContributeFavoritesFragmentInjector.FavoritesFragmentSubcomponent]
Надеюсь, я предоставил достаточно информации,Я был бы рад обновить с большим количеством кода, если это необходимо.Я новичок в Dagger 2, поэтому любая помощь будет оценена.