2015-10-05 13 views
9

Tôi đang cố sử dụng Butterknife với mã Kotlin và mã Java. Tôi biết rằng trước khi M12, đã có sự hỗ trợ hoặc xử lý chú thích mà ButterKnife yêu cầu. Vì vậy, tôi đã giữ các hoạt động của mình trong Java. Nó hoạt động ít nhất trong Java với Butterknife 6.x và preM12 Kotlin. Tôi đang thử bơknife 7.x với M13 và M14. Nó cần phải có hỗ trợ xử lý chú thích ngay cả, nhưng nó không làm việc cho tôi. bind() chức năng không ràng buộc bất cứ điều gì trong bộ điều hợp của tôi được viết bằng Java cũng như trong hoạt động viết bằng Kotlin.Butterknife 7.x có hoạt động với Kotlin M14 không?

Tôi đang sử dụng này trong build.gradle (thử phiên bản mới nhất trên Github):

apply plugin: 'com.neenbedankt.android-apt' 

dependencies { 
    provided files('libs/butterknife-annotations.jar') 
    kapt files('libs/butterknife-compiler-8.0.0-SNAPSHOT.jar') 
    compile 'com.jakewharton:butterknife:[email protected]' 
} 

này không biên dịch. Tôi đã thử cũng 'com.neenbedankt.android-apt' mà không biên dịch nhưng ràng buộc không hoạt động.

Tôi biết rằng có thể không hỗ trợ trong số butterknife cho điều đó. Nhưng có bất kỳ hack nào để nó hoạt động không?

+5

JakeWharton đã phát hành riêng KotterKnife, không phải là những gì bạn cần? https://github.com/JakeWharton/kotterknife – Sharj

+6

Ngoài ra, còn có Tiện ích mở rộng Android Kotlin. Không cần Butterknife. –

+0

Có, tôi biết về các tùy chọn này. Tôi sẽ đi với anko. Nhưng cảm ơn vì đã trả lời. –

Trả lời

13

Nó hoạt động với phiên bản hiện tại của Kotlin (1.0.0-beta-3595), tôi đề nghị bạn hãy xem dự án android-butterknife có thể tìm thấy trong repo kotlin-examples của JetBrains. Nói tóm lại tất cả các bạn cần làm là:

  1. Thêm dòng sau vào app/build.gradle tập tin của bạn:

    kapt { 
        generateStubs = true 
    } 
    
  2. Đặt dòng sau bên trong dependencies khối của cùng một tập tin build.gradle (giả sử bạn đã thêm compile 'com.jakewharton:butterknife:7.0.1' để phụ thuộc của bạn):

    kapt 'com.jakewharton:butterknife:7.0.1' 
    

Và đó phải là nó.

+0

Cũng xác nhận với kotlin ổn định 1.0.0. –

+1

Kể từ butterknife 8.x, bây giờ bạn chạy 'kapt' trên lib trình biên dịch thay vì tham chiếu thứ hai tới butterknife, tức là' kapt 'com.jakewharton: butterknife-compiler: 8.0.1''. Dự án ví dụ của JetBrains được liên kết trong câu trả lời ở trên đã được cập nhật để phản ánh thay đổi này. –

3

Butterknife được hỗ trợ. Sử dụng kapt: [1], [2].

Lưu ý rằng Butterknife không hỗ trợ các trường Java riêng tư, vì vậy bạn có thể sử dụng công cụ sửa đổi lateinit để công khai.

Ngoài ra, nếu bạn sử dụng kapt, apply plugin: 'com.neenbedankt.android-apt' không cần dùng nữa.

+0

Làm thế nào để làm cho Butterknife thiết lập onClicks và vv với kapt? –

Các vấn đề liên quan