我完全不熟悉Dagger2。为了开始使用它,我已经编写了一些代码。构建代码后,我遇到了以下异常
error: cannot find symbol method inject(TestApplication)
我刚才编码的类如下:
MainActivitySubComponent.class作为子组件
@Subcomponent()
public interface MainActivitySubComponent extends AndroidInjector<MainActivity>{
@Subcomponent.Builder
abstract class Builder extends AndroidInjector.Builder<MainActivity>{
}
}
MyModules.class作为我的 模块
@Module(subcomponents = MainActivitySubComponent.class)
public abstract class MyModules {
@Binds
@IntoMap
@ActivityKey(MainActivity.class)
abstract AndroidInjector.Factory<? extends Activity> bindActivityInjector(MainActivitySubComponent.Builder builder);
}
MainActivityComponent.class作为我的 Component
@Component(modules = {MyModules.class})
public interface MainActivityComponent {
}
Android应用程序代码
public class TestApplication extends Application implements HasActivityInjector{
@Inject
DispatchingAndroidInjector<Activity> activityDispatchingAndroidInjector;
@Override
public void onCreate() {
super.onCreate();
DaggerMainActivityComponent.create().inject(this);
}
@Override
public AndroidInjector<Activity> activityInjector() {
return activityDispatchingAndroidInjector;
}
}
无法识别以下行中的inject()方法
DaggerMainActivityComponent.create().inject(this);
提前谢谢...
答案 0 :(得分:0)
我认为您需要像这样在组件内部添加注入功能
@Component(modules = {MyModules.class})
public interface MainActivityComponent {
void inject(TestApplication test);
}
答案 1 :(得分:0)
我找到了答案。我必须使用
void inject(Application test);
代替
void inject(TestApplication test);
现在它可以正常工作