Android Dagger2子组件错误-何处必须注释方法ArrayAdapter

Android Dagger2子组件错误-何处必须注释方法ArrayAdapter,android,dagger-2,dagger,Android,Dagger 2,Dagger,我使用dagger2演示。我想在DemoDaggerSubActivity.java中使用ArrayAdapter注入的子组件 my Application.java @Override public void onCreate() { super.onCreate(); mApplicationComponent = DaggerApplicationComponent.builder() .applicationModule(new Applicat

我使用dagger2演示。我想在DemoDaggerSubActivity.java中使用ArrayAdapter注入的子组件

my Application.java

@Override public void onCreate() {
    super.onCreate();

    mApplicationComponent = DaggerApplicationComponent.builder()
            .applicationModule(new ApplicationModule(this))
            .build();
}


public ApplicationComponent getApplicationComponent() {
    return mApplicationComponent;
}
my 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);
}

}
my ApplicationComponent.java

@MyActivityScope
@Subcomponent(modules={ MyActivityModule.class })
public interface MyActivitySubComponent {
    @Named("my_list") ArrayAdapter myListAdapter();
}
@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);

}
@MyActivityScope
@Subcomponent(modules={ MyActivityModule.class })
public interface MyActivitySubComponent {

    void inject(DemoDaggerSubActivity activity);

    @Named("my_list") ArrayAdapter myListAdapter();
}
@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);

}
my DemaggerSubactivity.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中删除inject方法,并将其放在MyActivitySubComponent.java中

@MyActivityScope
@Subcomponent(modules={ MyActivityModule.class })
public interface MyActivitySubComponent {
    @Named("my_list") ArrayAdapter myListAdapter();
}
@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);

}
@MyActivityScope
@Subcomponent(modules={ MyActivityModule.class })
public interface MyActivitySubComponent {

    void inject(DemoDaggerSubActivity activity);

    @Named("my_list") ArrayAdapter myListAdapter();
}
@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);

}
新建MyActivitySubComponent.java

@MyActivityScope
@Subcomponent(modules={ MyActivityModule.class })
public interface MyActivitySubComponent {
    @Named("my_list") ArrayAdapter myListAdapter();
}
@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);

}
@MyActivityScope
@Subcomponent(modules={ MyActivityModule.class })
public interface MyActivitySubComponent {

    void inject(DemoDaggerSubActivity activity);

    @Named("my_list") ArrayAdapter myListAdapter();
}
@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);

}
新的ApplicationComponent.java

@MyActivityScope
@Subcomponent(modules={ MyActivityModule.class })
public interface MyActivitySubComponent {
    @Named("my_list") ArrayAdapter myListAdapter();
}
@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);

}
@MyActivityScope
@Subcomponent(modules={ MyActivityModule.class })
public interface MyActivitySubComponent {

    void inject(DemoDaggerSubActivity activity);

    @Named("my_list") ArrayAdapter myListAdapter();
}
@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);

}

您没有将子组件添加到图形中,因此出现了错误