Dagger2 子组件错误 - 必须在何处注释方法 ArrayAdapter
Dagger2 Subcomponent error - where have to annotate method ArrayAdapter
我使用 https://guides.codepath.com/android/Dependency-Injection-with-Dagger-2 的 dagger2 演示。我想在 DemoDaggerSubActivity.java.
中使用子组件进行 ArrayAdapter 注入
我的Application.java
@Override public void onCreate() {
super.onCreate();
mApplicationComponent = DaggerApplicationComponent.builder()
.applicationModule(new ApplicationModule(this))
.build();
}
public ApplicationComponent getApplicationComponent() {
return mApplicationComponent;
}
我的MyActivityModule.java
@Module
public class MyActivityModule {
private final DemoDaggerSubActivity activity;
// must be instantiated with an activity
public MyActivityModule(DemoDaggerSubActivity activity) { this.activity = activity; }
@Provides
@MyActivityScope
@Named("my_list")
public ArrayAdapter providesMyListAdapter() {
return new ArrayAdapter<String>(activity, android.R.layout.activity_list_item);
}
}
我的MyActivitySubComponent.java
@MyActivityScope
@Subcomponent(modules={ MyActivityModule.class })
public interface MyActivitySubComponent {
@Named("my_list") ArrayAdapter myListAdapter();
}
我的ApplicationComponent.java
@Singleton
@Component( modules = {ApplicationModule.class} )
public interface ApplicationComponent {
void inject(DemoDaggerSubActivity activity);
// factory method to instantiate the subcomponent defined here (passing in the module instance)
MyActivitySubComponent newMyActivitySubcomponent(MyActivityModule activityModule);
}
我的DemoDaggerSubActivity.java
@Inject @Named("my_list")
ArrayAdapter arrayAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
((AttendanceApplication) getApplication()).getApplicationComponent().newMyActivitySubcomponent(new MyActivityModule(this)).inject(this);
}
项目重建后出现错误
我在哪里注释方法 ArrayAdapter ?
必须从 ApplicationComponent.java 中删除注入方法并将其放入 MyActivitySubComponent.java
新MyActivitySubComponent.java
@MyActivityScope
@Subcomponent(modules={ MyActivityModule.class })
public interface MyActivitySubComponent {
void inject(DemoDaggerSubActivity activity);
@Named("my_list") ArrayAdapter myListAdapter();
}
新ApplicationComponent.java
@Singleton
@Component( modules = {ApplicationModule.class} )
public interface ApplicationComponent {
// factory method to instantiate the subcomponent defined here (passing in the module instance)
MyActivitySubComponent newMyActivitySubcomponent(MyActivityModule activityModule);
}
我使用 https://guides.codepath.com/android/Dependency-Injection-with-Dagger-2 的 dagger2 演示。我想在 DemoDaggerSubActivity.java.
中使用子组件进行 ArrayAdapter 注入我的Application.java
@Override public void onCreate() {
super.onCreate();
mApplicationComponent = DaggerApplicationComponent.builder()
.applicationModule(new ApplicationModule(this))
.build();
}
public ApplicationComponent getApplicationComponent() {
return mApplicationComponent;
}
我的MyActivityModule.java
@Module
public class MyActivityModule {
private final DemoDaggerSubActivity activity;
// must be instantiated with an activity
public MyActivityModule(DemoDaggerSubActivity activity) { this.activity = activity; }
@Provides
@MyActivityScope
@Named("my_list")
public ArrayAdapter providesMyListAdapter() {
return new ArrayAdapter<String>(activity, android.R.layout.activity_list_item);
}
}
我的MyActivitySubComponent.java
@MyActivityScope
@Subcomponent(modules={ MyActivityModule.class })
public interface MyActivitySubComponent {
@Named("my_list") ArrayAdapter myListAdapter();
}
我的ApplicationComponent.java
@Singleton
@Component( modules = {ApplicationModule.class} )
public interface ApplicationComponent {
void inject(DemoDaggerSubActivity activity);
// factory method to instantiate the subcomponent defined here (passing in the module instance)
MyActivitySubComponent newMyActivitySubcomponent(MyActivityModule activityModule);
}
我的DemoDaggerSubActivity.java
@Inject @Named("my_list")
ArrayAdapter arrayAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
((AttendanceApplication) getApplication()).getApplicationComponent().newMyActivitySubcomponent(new MyActivityModule(this)).inject(this);
}
项目重建后出现错误
我在哪里注释方法 ArrayAdapter ?
必须从 ApplicationComponent.java 中删除注入方法并将其放入 MyActivitySubComponent.java
新MyActivitySubComponent.java
@MyActivityScope
@Subcomponent(modules={ MyActivityModule.class })
public interface MyActivitySubComponent {
void inject(DemoDaggerSubActivity activity);
@Named("my_list") ArrayAdapter myListAdapter();
}
新ApplicationComponent.java
@Singleton
@Component( modules = {ApplicationModule.class} )
public interface ApplicationComponent {
// factory method to instantiate the subcomponent defined here (passing in the module instance)
MyActivitySubComponent newMyActivitySubcomponent(MyActivityModule activityModule);
}