Tôi là người mới cho Dagger. hiện tại tôi có thể tạo dự án mẫu một số mã snip:Lỗi tiêm Dagger 2 trong AppCompatActivity
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{}
Khi dự án biên dịch tôi nhận được lỗi:
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>
Vì vậy, nếu tôi thay đổi TutorialActivity như:.
public class TutorialActivity extends Activity{}
or even
public class TutorialActivity{} // Without extends
Sau đó, nó sẽ hoạt động bình thường (tôi có thể thấy lớp được tạo ra bởi Dagger2).
Vui lòng trợ giúp!
Cảm ơn.
CẬP NHẬT
cấu trúc dự án của tôi:
common
module.app
mô-đun. (mô-đun ứng dụng sẽ sử dụng mô-đun chung như phụ thuộc vào gradle).
Trong cả hai build.gradle (mô-đun phổ biến và ứng dụng) Tôi nói thêm:
apt "com.google.dagger:dagger-compiler:${daggerVersion}"
compile "com.google.dagger:dagger:${daggerVersion}"
Trong build.gradle tại mô-đun chung:
provide "org.glassfish:javax.annotation:${javaxAnnotationVersion}"
lỗi chỉ xảy ra nếu tôi có 2 mô-đun. (mô-đun app
phụ thuộc vào common
). Nếu tôi di chuyển Component/Module của mình sang module common
-> Nó hoạt động. Nhưng khi tôi chuyển sang mô-đun app
-> Lỗi khi biên dịch.
Vui vì tôi đã giải quyết được vấn đề của bạn! – plast
@plast Nhưng tôi vẫn không biết tại sao: TutorialActivity mở rộng Hoạt động => đang hoạt động; Nhưng mở rộng từ AppCompatActivity -> Error khi biên dịch – quangson91
Bạn có nhập chính xác thư viện hỗ trợ không? – plast