似乎Dagger根本没有解释如何处理提供/管理自动生成的代码,例如Google Auto Factory创建的代码。此外,Google Auto的人员并没有真正解释如何与Dagger进行整合,因此对于像我这样的人来说,如果没有关于两个库如何工作的非常高级的知识,这会让他们感到痛苦。
我所看到的问题是,当您没有为Google Auto Factory生成的工厂提供完全合格的名称时,Dagger根本不会接受它们。但是,提供完全合格的工厂名称将允许Dagger正确地将所有内容链接在一起。
我的问题是,这是更多的一般/无证问题,而使用Dagger可能会遇到或者应该在两个库中修复的错误?
使用:
@Module(
library = true,
complete = false
)
public class FactoryModule {
@Provides
MembersAdapterFactory provideMembersAdapterFactory(
me.magneto.groups.adapters.MembersAdapterFactoryImpl membersAdapterFactory) {
return membersAdapterFactory;
}
}
失败:
import me.magneto.groups.adapters.MembersAdapterFactoryImpl;
@Module(
library = true,
complete = false
)
public class FactoryModule {
@Provides
MembersAdapterFactory provideMembersAdapterFactory(
MembersAdapterFactoryImpl membersAdapterFactory) {
return membersAdapterFactory;
}
}
工厂:
public interface MembersAdapterFactory {
public MembersAdapter make(
Context context, int resource, List<Member> members);
}
@AutoFactory(
className = "MembersAdapterFactoryImpl",
implementing = { MembersAdapterFactory.class }
)
public class MembersAdapter extends ArrayAdapter<Member> {
private MembersAdapterHelper mMembersAdapterHelper;
MembersAdapter(@Provided MembersAdapterHelper membersAdapterHelper,
Context context,
int resource,
List<Member> members) {
super(context, resource, members);
mMembersAdapterHelper = membersAdapterHelper;
}
}