Android错误:找不到符号类DaggerAppComponent

Android错误:找不到符号类DaggerAppComponent,android,dagger-2,dagger,Android,Dagger 2,Dagger,我的同事根据此开发了一个应用程序,我应该做一些更改 在我的案例中,经过一些更改并删除Google Room库后,我遇到了以下问题: 错误:找不到符号类DaggerApplicationComponent 经过多次重建后仍然无法生成项目 dagger2Version='2.20' 应用程序类 ActivityBuilder类 进口匕首模块; 导入dagger.android.contributesandroid注入器 @Module public abstract class ActivityBu

我的同事根据此开发了一个应用程序,我应该做一些更改

在我的案例中,经过一些更改并删除Google Room库后,我遇到了以下问题:

错误:找不到符号类DaggerApplicationComponent

经过多次重建后仍然无法生成项目

dagger2Version='2.20'

应用程序类

ActivityBuilder类 进口匕首模块; 导入dagger.android.contributesandroid注入器

@Module
public abstract class ActivityBuilder {

    @ContributesAndroidInjector(modules = {
            FeedActivityModule.class,
            BlogFragmentProvider.class,
            OpenSourceFragmentProvider.class})
    abstract FeedActivity bindFeedActivity();

    @ContributesAndroidInjector(modules = LoginActivityModule.class)
    abstract LoginActivity bindLoginActivity();

    // ...

    @ContributesAndroidInjector(modules = SettingsActivityModule.class)
    abstract SettingsActivity bindPageSixActivity();

    @ContributesAndroidInjector(modules = ChoosingModeActivityModule.class)
    abstract ChoosingModeActivity bindChoosingModeActivity();

}
错误日志:

错误:[Dagger/MissingBinding]com.packagename.data.DataManager在没有@Provides注释方法的情况下无法提供

com.packagename.data.DataManager在

com.packagename.ui.feed.FeedActivityModule.provideFeedViewModeldataManager

com.packagename.ui.feed.FeedViewModel在

com.packagename.ui.feed.FeedActivity.mFeedViewModel

com.packagename.ui.feed.FeedActivity在

dagger.android.android注射器.injectT[com.packagename.di.component.AppComponent?com.packagename.di.builder.ActivityBuilder_BindFeedActivity.FeedActivitySubcomponent]

饲料活性模块

FeedViewModel


问题是您尚未注入DataManager类,因此需要通过构造函数注入注入DataManager,或者必须在AppComponent中提供@Provides注释,并且在活动扩展AppActivity时,应使用AndroidSupportInjectionModule.class代替AndroidInjectionModule.class然后使用雄激素支持注射

@Component(modules = {AndroidSupportInjectionModule.class, AppModule.class, ActivityBuilder.class})
public interface AppComponent {

    void inject(AppApplication networkApplication);

    @Component.Builder
    interface Builder {
        @BindsInstance
        Builder application(AppApplication application);

        AppComponent build();
    }

}

你必须检查日志中的错误,然后才能解决。一定是有错误。我在日志中添加了一些详细信息。FeedActivityModule你能发布这个类吗,最后,问题是你没有注入DataManager类,所以你需要通过构造函数注入来注入DataManager,或者你必须在AppComponent中用@Provides注释来提供DataManager,希望这能奏效
import javax.inject.Singleton;

import dagger.BindsInstance;
import dagger.Component;
import dagger.android.AndroidInjectionModule;

@Singleton
@Component(modules = {AndroidSupportInjectionModule.class, AppModule.class, ActivityBuilder.class})
public interface AppComponent {

    void inject(MvvmApp app);

    @Component.Builder
    interface Builder {

        @BindsInstance
        Builder application(Application application);

        AppComponent build();
    }
}
@Module
public abstract class ActivityBuilder {

    @ContributesAndroidInjector(modules = {
            FeedActivityModule.class,
            BlogFragmentProvider.class,
            OpenSourceFragmentProvider.class})
    abstract FeedActivity bindFeedActivity();

    @ContributesAndroidInjector(modules = LoginActivityModule.class)
    abstract LoginActivity bindLoginActivity();

    // ...

    @ContributesAndroidInjector(modules = SettingsActivityModule.class)
    abstract SettingsActivity bindPageSixActivity();

    @ContributesAndroidInjector(modules = ChoosingModeActivityModule.class)
    abstract ChoosingModeActivity bindChoosingModeActivity();

}
import dagger.Module;
import dagger.Provides;

@Module
public class FeedActivityModule {

    @Provides
    FeedPagerAdapter provideFeedPagerAdapter(FeedActivity activity) {
        return new FeedPagerAdapter(activity.getSupportFragmentManager());
    }

    @Provides
    FeedViewModel provideFeedViewModel(DataManager dataManager, SchedulerProvider schedulerProvider) {
        return new FeedViewModel(dataManager, schedulerProvider);
    }
}
public class FeedViewModel extends BaseViewModel/*<FeedNavigator>*/ {

    public FeedViewModel(DataManager dataManager, SchedulerProvider schedulerProvider) {
        super(dataManager, schedulerProvider);
    }
}
@Component(modules = {AndroidSupportInjectionModule.class, AppModule.class, ActivityBuilder.class})
public interface AppComponent {

    void inject(AppApplication networkApplication);

    @Component.Builder
    interface Builder {
        @BindsInstance
        Builder application(AppApplication application);

        AppComponent build();
    }

}