小编Xia*_*eng的帖子

Dagger v2:将2个不同的范围注入一个对象

我将moduleA设置为应用程序范围的单例提供程序,ModuleB作为用户相关的对象提供程序

我的用户显示片段将使用系统总线向他人发送消息并使用用户相关对象进行显示.

问题不能将不同的scrope类注入一个对象.使用component.getX方法工作正常,但注入是首选方式.错误消息: @ UserScope可能无法引用具有差异范围的绑定:@Provides @Singleton Bus ModuleA.provideBus()

@Module
public class ModuleA {
  @Provides @Singleton Bus provideBus() {...}
}
Run Code Online (Sandbox Code Playgroud)

模块B作为用户相关的信息提供者

@Module
public class ModuleB{
  private final User user;
  public ModuleB(User user) {...}
  @Provides @UserScope User provideUser() {}
  @Provides @UserScope UserManager provideUserManager() {}
}
Run Code Online (Sandbox Code Playgroud)

组件设置如下:

@Component (modules={ModuleA.class})
@Singleton
public interface ComponentA {
  Bus getBus();
  void inject(ClassA target);
}

@Component(modules={ModuleB.class})
@UserScope
public interface ComponentB {
  User getUser();
  UserManager getUserManager();
  void inject(ClassA target);
}


class UserFragment exrtends Fragment {
   @Inject Bus bus;
   @Inject …
Run Code Online (Sandbox Code Playgroud)

android dagger-2

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

标签 统计

android ×1

dagger-2 ×1