2016-08-27 26 views
0

たとえば、私は、インターフェイスを次ていますダガー2エラー:「RepositoryImplが提供する、アノテーション付きメソッド@Injectコンストラクタなしまたは@から提供することはできません」

public interface Repository { 
    Observable<Pojo> getPojos(); 
} 

とその実装:

public class RepositoryImpl implements Repository { 

    public RepositoryImpl() { 

    } 

    @Override 
    public Observable<Pojo> getPojos() { 
     return null; 
    } 

} 

モジュール:

@Module 
class AppModule { 

    public AppModule() { 

    } 

    @Provides 
    @Singleton 
    Repository provideRepositoryImpl() { 
     return new RepositoryImpl(); 
    } 

} 

とコンポーネント:

@Singleton 
@Component(modules = { AppModule.class }) 
public interface AppComponent { 
    void inject(MainActivity mainActivity); 
} 

プロジェクトをビルドしようとすると、問題のタイトルのようにエラーが発生します。私のコードにはどんな問題がありますか?

+1

通常どこ注入ですアプリケーションクラスのために? –

答えて

0

私のセットアップダガー2は私のプロジェクトアプリケーションにあります。私は注入コンポーネントを追加します。そのようです。

public class NyApplication extends Application { 

InjectionComponent component; 

@Override 
public void onCreate() { 
    super.onCreate(); 
    setDagger(); 
} 

private void setDagger() { 
    component = DaggerAppComponent.builder() 
      .appComponent(new AppModule()) 
      .build(); 
    component.inject(this); 
} 

public InjectionComponent getComponent() { 
    return component; 
}} 

それから私の活動は何でも。私はそれをonCreate onに注入する。

public class MainActivity extends Activity { 

@Inject 
Object object; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    ((MyApplication) getApplication()).getComponent().inject(this); 

}} 

私はこれがあなたを助けてくれることを願っています。

1

慎重に(強調鉱山を)自分の誤りを読む:

Dagger 2 error: “RepositoryImpl cannot be provided without an @Inject constructor or from an @Provides-annotated method”

一般に、これはあなたが@Inject RepositoryImpl、ない@Inject Repositoryに試みたことを意味します。これは、ダガーが@Injectという名前のコンストラクタを使用してRepositoryImplを作成するのではなく、モジュールがRepositoryImplコンストラクタを直接呼び出すため、特に重要です。ダガーはApplicationクラスに注入します(あなたが持っていた、あなたは@Provides方法のRepositoryImplパラメータを作るか、@Binds方法に切り替え、そしてあなたが実装対インターフェースを注入する間、あなたの選択肢を持っている可能性があります。)

関連する問題