Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dagger 2.11[Dagger.android.androidject.inject(T)]发现了一个依赖循环_Android_Dagger 2_Dagger - Fatal编程技术网

Dagger 2.11[Dagger.android.androidject.inject(T)]发现了一个依赖循环

Dagger 2.11[Dagger.android.androidject.inject(T)]发现了一个依赖循环,android,dagger-2,dagger,Android,Dagger 2,Dagger,我不熟悉Dagger,也不了解Dagger 2.11在android应用程序中的实现。我遵循了一些教程并创建了一个示例项目。但我得到了这个错误: Error:(19, 8) error: [dagger.android.AndroidInjector.inject(T)] Found a dependency cycle: com.saharan.daggerart.DaggerArtApplication is injected at com.saharan.daggerart.AppModu

我不熟悉Dagger,也不了解Dagger 2.11在android应用程序中的实现。我遵循了一些教程并创建了一个示例项目。但我得到了这个错误:

Error:(19, 8) error: [dagger.android.AndroidInjector.inject(T)] Found a dependency cycle:
com.saharan.daggerart.DaggerArtApplication is injected at
com.saharan.daggerart.AppModule.provideApplicationContext(application)
com.saharan.daggerart.DaggerArtApplication is injected at
com.saharan.daggerart.AppModule.provideSharedPreferences(application)
android.content.SharedPreferences is injected at
com.saharan.daggerart.MainActivity.preferences
com.saharan.daggerart.MainActivity is injected at
dagger.android.AndroidInjector.inject(arg0)
应用组件:

 @Singleton
@Component(modules = {AndroidInjectionModule.class, AppModule.class, ActivityModule.class})
public interface AppComponent {
    @Component.Builder
    interface Builder {
        @BindsInstance
        Builder application(Application application);
        AppComponent build();
    }
    void inject(DaggerArtApplication application);
}
应用模块:

@Singleton
@Module(subcomponents = {MainActivityComponent.class})
public class AppModule {

    @Provides
    @Singleton
    DaggerArtApplication provideApplicationContext(DaggerArtApplication application) {
        return application;
    }

    @Provides
    @Singleton
    SharedPreferences provideSharedPreferences(DaggerArtApplication application) {
        return application.getSharedPreferences(Constants.PrefKeys.PREF_NAME, Context.MODE_PRIVATE);
    }
}
活动模块:

@Module
public abstract class ActivityModule {
    @Binds
    @IntoMap
    @ActivityKey(MainActivity.class)
    abstract AndroidInjector.Factory<? extends Activity> bindMainActivity(MainActivityComponent.Builder builder);
}
@Module
public class MainActivityModule {

    @Provides
    String provideUserName() {
        return "Mr. Bond";
    }
}
现在主要活动是:

 public class MainActivity extends AppCompatActivity {

    @Inject String username;
    @Inject
    SharedPreferences preferences;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        AndroidInjection.inject(this);
        setContentView(R.layout.activity_main);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
我做错了什么? 请帮忙

看起来像是打字错误

DaggerArtApplication provideApplicationContext(DaggerArtApplication application)
这意味着Dagger需要一个
DaggerApplication
来提供一个
DaggerApplication
。我猜你是想说

DaggerArtApplication provideApplicationContext(Application application)
匕首应用程序
绑定到
应用程序

看起来像一个打字错误

DaggerArtApplication provideApplicationContext(DaggerArtApplication application)
这意味着Dagger需要一个
DaggerApplication
来提供一个
DaggerApplication
。我猜你是想说

DaggerArtApplication provideApplicationContext(Application application)
它将
daggeratapplication
绑定到
应用程序