匕首2:无限的依赖注入

时间:2016-12-13 15:24:38

标签: android android-fragments generics dependency-injection dagger

最近我一直在用匕首挣扎,在追赶了一点后,我陷入了仿制药的困境。我有几个片段,每个片段都注入了自己的演示者。我想将注入提取到BaseFragment类,而不是:

1:不得不打电话:

((App) getActivity().getApplication()).getComponent().inject(this);
来自每个片段的

2:在每个片段类中注册具体的presenter字段

3:在组件中为每个具体的片段添加单独的inject()方法

我的主要组件如下:

@AppScope
@Component(modules = {...})
public interface ApplicationComponent {

    void inject(BaseFragment<BasePresenter> baseFragment);

    void inject(FeedFragment baseFragment);

    void inject(XYZFragment xyzFragment);

...

我尝试过添加这些

void inject(Class<? extends BaseFragment> aClass);

<TPresenter extends BasePresenter> void inject(BaseFragment<TPresenter> tPresenterBaseFragment);

但每个变体在编译时都给我相同的信息:

error: Type parameters must be bounded for members injection

我查了一下,发现自Dagger 2.0以来支持泛型,我搜索了this,但无济于事

我的BaseFragment目前看起来像这样

public abstract class BaseFragment<TPresenter extends BasePresenter> extends Fragment implements
 BaseView {

TPresenter presenter;

@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    ((App) getActivity().getApplication()).getComponent().inject((BaseFragment) this);
}

任何解决方案或解决方法我如何才能在ApplicationComponent中完成BaseFragment的一个注入方法,并且只有一个在BaseFragment上调用它,将不胜感激

0 个答案:

没有答案
相关问题