Càng thích chạy bộ xử lý dao găm hơn lớp đó thay vì


124

Tôi nhận được ghi chú này trong bản dựng bất cứ khi nào tôi thực hiện tiêm vào lớp kotlin (btw, tôi có một dự án Android hỗn hợp với cả kotlin và java).

Ví dụ: sau tác vụ lớp này: compileStagingDebugJavaWithJavac(StagingDebug là biến thể xây dựng của tôi), tôi nhận được thông báo này:

"Lưu ý: Tạo một MemberInjection hoặc Factory cho com.packageNameXXX.CferenceDiscoveryMapFragment. Thay vào đó, hãy chạy bộ xử lý dao găm trên lớp đó."

CourseDiscoveryMapFragment của tôi có thể được nhìn thấy ở đây:

class CourseDiscoveryMapFragment : Fragment(){

    @Inject
    lateinit var presenter: CourseDiscoveryMapPresenter

    lateinit var mapView: MapView

    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {

        val view = inflater.inflate(R.layout.fragment_discovery_map, container, false)

        MapsInitializer.initialize(activity)

        mapView = view.mapView
        mapView.onCreate(savedInstanceState?.getBundle(BUNDLE_KEY_MAP_STATE))

        (activity as BaseActivity)
                .activityComponent.inject(this)
}

ActivityComponent của tôi là:

@ActivityScope
@Subcomponent(modules = ActivityModule.class)
public interface ActivityComponent {

    void inject(BaseActivity baseActivity);

    void inject(CourseDiscoveryMapFragment fragment);

    //Exposed to sub-graphs.
    Activity activity();
}

Vì vậy, tôi có thành phần dao găm và các mô-đun được viết bằng Java, trong khi có tiêm dao găm trong Kotlin.

Đây có phải là bất cứ điều gì mà tôi nên lo lắng?

Cảm ơn bạn.


Bạn có thể gửi toàn bộ lỗi / cảnh báo và cả mã liên quan đến nó không?
marcospereira

4
Câu hỏi cần chi tiết hơn. Về cơ bản, bạn đã viết một truy vấn google như một câu hỏi.
Jayson Minard

@marcospereira Chỉnh sửa lại! Cảm ơn!
Fábio Carballo

4
Này, bạn đã tìm thấy giải pháp hoặc có thể lý do cho cảnh báo đó?
wojciech_maciejewski

3
Đây là câu trả lời: github.com/sapes/dagger/issues/537
R. Zagórski

Câu trả lời:


5

Tôi sợ bạn không thể. Tại sao không viết mô-đun phụ thuộc trong Kotlin?

Để viết các mô đun phụ thuộc trong java, bạn cần định cấu hình tập lệnh Gradle của mình theo cách này:

 compile 'com.google.dagger:dagger:2.8'
 apt 'com.google.dagger:dagger-compiler:2.8'

Nhưng, để viết các mô-đun phụ thuộc trong Kotlin, bạn nên định cấu hình tập lệnh Gradle của mình theo cách này:

compile 'com.google.dagger:dagger:2.8' 
kapt 'com.google.dagger:dagger-compiler:2.8'

dao găm cần công cụ xử lý chú thích để tạo mã phụ thuộc trong quá trình biên dịch. Vì vậy, tôi đoán bạn chỉ cần sử dụng đúng APT (công cụ xử lý chú thích) theo đúng ngôn ngữ.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.