相关疑难解决方法(0)

如何在Android项目中从头开始设置DAGGER依赖注入?

如何使用Dagger?如何配置Dagger在我的Android项目中工作?

我想在我的Android项目中使用Dagger,但我发现它令人困惑.

编辑:Dagger2也从2015年04月15日开始,它更令人困惑!

[这个问题是一个"存根",我在我的答案中添加了更多关于Dagger1的知识,并且更多地了解了Dagger2.这个问题更多的是指导而不是"问题".

android dependency-injection dagger dagger-2

96
推荐指数
2
解决办法
2万
查看次数

匕首2个例子

Dagger 2即将到来,但可用的示例甚至不能立即编译,文档是Dagger 1的复制粘贴替换.

有没有人在Google的Dagger 2上有适当的应用程序示例?

android dagger dagger-2

55
推荐指数
3
解决办法
3万
查看次数

匕首的范围2

我可能错过了一些东西,但我认为像@Singleton这样的Scopes用来定义"范围生命周期".

我在Android应用程序中使用Dagger 2(但我不认为这个问题与Android有关).

我有1个模块:

@Module public class MailModule {

  @Singleton @Provides public AccountManager providesAccountManager() {
    return new AccountManager();
  }

  @Singleton @Provides public MailProvider providesMailProvider(AccountManager accountManager) {
    return new MailProvider(accountManager);
  }
}
Run Code Online (Sandbox Code Playgroud)

我有两个不同的组件,@Singleton范围:

@Singleton
@Component(modules = MailModule.class)
public interface LoginComponent {

  public LoginPresenter presenter();
}


@Singleton
@Component(
    modules = MailModule.class
)
public interface MenuComponent {

  MenuPresenter presenter();

}
Run Code Online (Sandbox Code Playgroud)

两者都有,MenuPresenter并且LoginPresenter有一个@Inject构造函数.虽然MenuPresenter期望MailProvider作为参数,但LoginPresenter需要AccountManager:

  @Inject public MenuPresenter(MailProvider mailProvider) { ... }

  @Inject public LoginPresenter(AccountManager …
Run Code Online (Sandbox Code Playgroud)

java android dagger-2

26
推荐指数
2
解决办法
1万
查看次数

Dagger 2.11 ContributesAndroidInjector Singleton依赖注入失败

我正在从Dagger 2.11中探索新的dagger.android.我希望不必创建自定义范围注释@PerActivity.到目前为止,我能够做到以下几点:

1)定义应用程序范围单例并将它们注入活动.

2)定义活动范围非单例依赖关系,并使用它们将它们注入到它们的活动中 @ContributesAndroidInjector

我无法弄清楚的是如何使用它的应用程序范围Singleton和Activity范围非单例.

在下面的示例中,我想要我的活动范围MyActivityDependencyAMyActivityDependencyB可以访问SingletonMyActivityService

以下设置导致:

错误:(24,3)错误:com.example.di.BuildersModule_BindMyActivity.MyActivitySubcomponent(unscoped)可能不引用作用域绑定:@Singleton @Provides com.example.MyActivityService com.example.MyActivitySingletonsModule.provideMyActivityService()

这是我的设置.注意,我定义了单独的MyActivitySingletonsModule, MyActivityModule因为我不能在同一个Module文件中混合使用Singleton和非Singleton依赖项.

@Module
public abstract class BuildersModule {
    @ContributesAndroidInjector(modules = {MyActivitySingletonsModule.class, MyActivityModule.class})
    abstract MyActivity bindMyActivity();
    }
}
Run Code Online (Sandbox Code Playgroud)

@Module
public abstract class MyActivityModule {
    @Provides
    MyActivityDependencyA provideMyActivityDependencyA(MyActivityService myActivityService){
       return new MyActivityDependencyA(myActivityService);
    }
    @Provides
    MyActivityDependencyB provideMyActivityDependencyB(MyActivityService myActivityService) {
        return new MyActivityDependencyB(myActivityService);
    }
}
Run Code Online (Sandbox Code Playgroud)

@Module
public abstract class MyActivitySingletonsModule {
    @Singleton
    @Provides
    MyActivityService provideMyActivityService() {
        return new MyActivityService();
    } …
Run Code Online (Sandbox Code Playgroud)

dagger dagger-2

3
推荐指数
1
解决办法
3896
查看次数

标签 统计

dagger-2 ×4

android ×3

dagger ×3

dependency-injection ×1

java ×1