我有以下形式的活动:
public class MyActivity<T extends AbstractDescriptionItem> extends BaseActivity[...]
当我定义时:
@ContributesAndroidInjector
abstract MyActivity contributeMyActivity();
我收到此错误:
error: [Dagger/MembersInjection] [dagger.android.AndroidInjector.inject(T)] Cannot inject members into raw type com.test MyActivity
如果我尝试:
@ContributesAndroidInjector
abstract MyActivity<AbstractDescriptionItem> contributeMyActivity();
我懂了
error: @ContributesAndroidInjector methods cannot return parameterized types
有没有办法在不更改体系结构的情况下在MyActivity中注入依赖项?
最佳答案
我想出的解决方案是使用类型参数实现Activity / Fragment的不同情况,并贡献实现。对于您的情况将是这样的:
public abstract class MyActivity<T extends AbstractDescriptionItem> extends BaseActivity[...]
假设您有一个扩展
BookDescriptionItem
的AbstractDescriptionItem
类:public class BookDescriptionActivity extends MyActivity<BookDescriptionItem>
最后,贡献实现:
@ContributesAndroidInjector
abstract BookDescriptionActivity contributeBookDescriptionActivity();
关于android - 在通用类中注入(inject)字段,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50372356/