Dagger 2.11[Dagger.android.androidject.inject(T)]发现了一个依赖循环
我不熟悉Dagger,也不了解Dagger 2.11在android应用程序中的实现。我遵循了一些教程并创建了一个示例项目。但我得到了这个错误: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
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
绑定到应用程序