2017-06-22 8 views
1

を初期化できません、私はこのようなエラーをキャッチ:ダガー2 - 私は私のAndroidのプロジェクトをコンパイルすると

エラー:(15、13)エラー:android.content.Contextは@なしで提供することはできませんが、注釈付き提供します方法。 android.content.ContextがCOMに設けられている...... di.components.AppComponent.getContext()

マイ成分:

@Singleton 
@Component(modules = {AppModule.class}) 
public interface AppComponent { 
    Context getContext(); 
    DataManager getDataManager(); 
} 

マイモジュール:

@Module 
public class AppModule { 
    protected final Application mApplication; 

    public AppModule(Application application) { 
     mApplication = application; 
    } 

    @Provides 
    @Singleton 
    Application provideApplication() { 
     return mApplication; 
    } 

    @Provides 
    @ApplicationContext 
    @Singleton 
    Context provideContext() { 
     return mApplication; 
    } 

    @Provides 
    @Singleton 
    DataManager provideDataManager() { 
     return new DataManager(); 
    } 
} 
+0

すでに 'Singleton'スコープ注釈 – nikis

+0

このリンクを持っているので、あなたは、それを削除する必要があり、モジュール内の' ApplicationContext'アノテーションを持ってhttps://stackoverflow.com/questions/30552481/context-can-be-provided-an-provide-annotated-method-but-it-isは助けになるかもしれません – nbokmans

答えて

1

コンポーネントには、Context

@Singleton 
@Component(modules = {AppModule.class}) 
interface AppComponent { 
    Context getContext(); 
} 

Whすべてのエンそれは@ApplicationContext Contextがある知っている(修飾子に注意してください?):

@Module 
class AppModule { 

    @Provides 
    @Singleton 
    @ApplicationContext 
    Context provideContext() { 
    return mApplication; 
    } 
} 

あなたは@ApplicationContext修飾子を削除し、ちょうどあなたがしようとした場合の方法で得ることができるあなたのモジュールからContextを提供することができるいずれかまた、あなたの活動のコンテキストを提供、またはあなたの修飾子を維持し、実際に資格コンテキストを提供するために:あなたが使用しようと

@Singleton 
@Component(modules = {AppModule.class}) 
interface AppComponent { 
    @ApplicationContext 
    Context getContext(); 
} 

/アプリケーションコンテキストを注入しますあなたはまた、修飾子を使用する必要があります。

@ApplicationContext @Inject Context mContext; 
関連する問題