私はDaggerの初心者です。私が作成 現在のサンプルプロジェクト、いくつかのスニップコード:AppCompatActivityのDagger 2注入エラー
MyComponent.java
@PerActivity
@Component(modules = MyModule.class)
public interface MyComponent {
void inject(TutorialActivity activity);
}
MyModule.java
@Module
public class MyModule {
@Provides
Position providePosition() {
return new Position();
}
}
PerActivity.java
@Scope
@Retention(RUNTIME)
public @interface PerActivity {}
TutorialActivity.java
public class TutorialActivity extends AppCompatActivity{}
コンパイルプロジェクトは、私はエラーを取得する:私のようにTutorialActivityを変更した場合
Error:Execution failed for task ':app:compileDebugJavaWithJavac'.
> java.lang.IllegalArgumentException: expected one element but was: <android.support.v4.app.FragmentActivity, android.support.v4.app.TaskStackBuilder.SupportParentable>
だから:
public class TutorialActivity extends Activity{}
or even
public class TutorialActivity{} // Without extends
そして、それが正常に動作します(私はDagger2によって生成されたクラスを参照することができます)。
助けてください!
ありがとうございました。
UPDATE
マイプロジェクト構造:
common
モジュール。app
モジュール。 (アプリケーションモジュールは、gradleに依存する共通モジュールを使用します)。両方のbuild.gradle(共通アプリモジュール)において
Iを添加:build.gradleで
apt "com.google.dagger:dagger-compiler:${daggerVersion}"
compile "com.google.dagger:dagger:${daggerVersion}"
を共通モジュールで:I 2を有する場合
provide "org.glassfish:javax.annotation:${javaxAnnotationVersion}"
エラーが発生しモジュール。 (モジュールapp
はcommon
に依存する)。 コンポーネント/モジュールをモジュールcommon
に移動すると動作します。 しかし、それをapp
モジュールに移動すると、 - >コンパイル時にエラーが発生します。
私はあなたの問題を解決しました! – plast
@plastしかし私はまだなぜか分からない:TutorialActivityはアクティビティを拡張する =>働いている。しかし、コンパイル時にAppCompatActivity - > Errorから拡張されます – quangson91
サポートライブラリを正しくインポートしていますか? – plast