相关疑难解决方法(0)

Android Dagger 2:Inject vs. Provide

我有一个关于Android Dagger 2以及使用@Inject@Provide注释的问题.给出以下两个简化示例:

public class A {
  String msg;

  public A(String msg){
    this.msg = msg;
  }
}

public class B {
  public A a;

  public B(A a){
    this.a = a;
  }
}

@Module
public class AModule {
  @Provides
  A providesA(){
    return new A("blah");
  }

  @Provides
  B ProvidesB(A a)
  {
    return new B(a);
  }
}
Run Code Online (Sandbox Code Playgroud)

这个例子是非常简单的,我在我的两个方法AModule@Provides注解.因此,Dagger可以创建一个B使用A字符串实例的对象blah.

我的第二个例子如下:

public class A {
  String msg;

  public A(String msg){
    this.msg …
Run Code Online (Sandbox Code Playgroud)

android dependency-injection dagger

14
推荐指数
1
解决办法
2953
查看次数

Dagger2:如何在同一个模块中使用@Provides和@Binds

我正在使用新的Dagger2(版本2.11),我正在使用像AndroidInjector和的新功能ContributesAndroidInjector.我有一个活动子组件,

        @Module
        abstract class ActivityBuilderModule {
            @ContributesAndroidInjector(modules = 
                   {UserListModule.class, MainFragmentModule.class})
            @ActivityScope
            abstract MainActivity bindsMainActivity();

        }



  @Module
  public abstract class MainFragmentModule {
    @ContributesAndroidInjector
    @FragmentScope
    @FragmentKey(UserListFragment.class)
    abstract UserListFragment bindsUserListFragment();

}
Run Code Online (Sandbox Code Playgroud)

UserListModule为片段提供依赖关系.一些依赖项我只想绑定实例,并返回,就像

 @Binds
 @ActivityScope
 abstract UserListView mUserListView(UserListFragment userListFragment);
Run Code Online (Sandbox Code Playgroud)

而不仅仅是简单地返回依赖,就像

@Provides
@ActivityScope
UserListView mUserListView(UserListFragment userListFragment){
    return userListFragment;
}
Run Code Online (Sandbox Code Playgroud)

我的模块也包含一些@Provides方法.我们可以同时使用@Binds,并@Provides在同一模块中的方法呢?我尝试如下所示

        @Module
        public abstract class UserListModule {
            @Provides
            @ActivityScope
            UserListFragment mUserListFragment() {
                return new UserListFragment();
            }

            @Binds
            @ActivityScope
            abstract UserListView mUserListView(UserListFragment userListFragment);

           // other …
Run Code Online (Sandbox Code Playgroud)

android dagger-2

14
推荐指数
3
解决办法
6900
查看次数

标签 统计

android ×2

dagger ×1

dagger-2 ×1

dependency-injection ×1