我正在尝试创建一个注释处理器,它将我的 MVP 视图(片段)处理为自动生成的子组件(类似于https://github.com/lukaspili/Auto-Dagger2,但适用于新的Dagger 2.10 android injectors)
到目前为止,我已经能够生成适当的文件,但是在编译生成的组件时出现了一个奇怪的错误消息
Error:(22, 58) error: @dagger.android.support.FragmentKey methods should bind dagger.android.AndroidInjector.Factory<? extends android.support.v4.app.Fragment>, not dagger.android.AndroidInjector.Factory<? extends android.support.v4.app.Fragment>. See google.github.io/dagger/android
工厂模块和子组件文件的结构应该是正确的,因为只要我复制粘贴生成的类并创建常规类(工厂模块和子组件)并使用真实类而不是生成的类,就不再显示该消息编译成功
似乎问题在于AndroidMapKeyValidator
(链接),其中!MoreTypes.equivalence().equivalent(returnType, intendedReturnType)
调用显然失败了,但是我没有太多调试注释处理器的经验,所以我不知道为什么...
也许有人可以帮助在哪里搜索问题?谢谢
仅供参考:MyFragment
确实延长android.support.v4.app.Fragment
我的文件:
生成工厂
@Module
public interface BuildersModule {
@Binds
@IntoMap
@FragmentKey(MyFragment.class)
abstract AndroidInjector.Factory<? extends Fragment> factory(MySubcomponent.Builder builder);
}
生成的子组件
@Subcomponent(modules = MyModule.class)
public interface MySubcomponent extends AndroidInjector<MyFragment> {
MyPresenter presenter();
@Subcomponent.Builder
abstract class Builder extends AndroidInjector.Builder<MyFragment> {}
}