2017-03-04 19 views
7

Tôi mới đến Koltin và thực sự yêu thích nó cho đến nay, nhưng tôi đã đánh một snag. Tôi chắc chắn rằng tôi đang thiếu một cái gì đó cực kỳ, cực kỳ cơ bản ở đây, nhưng dù sao, tôi là một mất mát, và tôi đánh giá cao sự giúp đỡ nào.Kotlin Android Studio/IntelliJ "Có thể được tham gia với nhiệm vụ" Kiểm tra Cảnh báo

Tôi đã chuyển đổi một lớp java đơn giản thành Kotlin bằng cách sử dụng lệnh Android Studio/IntelliJ. Sau chuyển đổi này, tôi nhận được cảnh báo kiểm tra rằng tôi không chắc chắn cách giải quyết. Tôi đã chuyển đổi 15-20 lớp học (nhiều trong số đó phức tạp hơn nhiều) cho Kotlin trước lớp này, và chưa thấy cảnh báo này.

enter image description here

lần nữa, tôi biết điều này phải là một cái gì đó thực sự cơ bản. Nhưng tôi đã rót qua các tài liệu Kotlin về các biến và các lớp và không thể tìm thấy bất cứ điều gì liên quan đến 'chuyển nhượng' hoặc khởi tạo nhiều biến cùng một lúc. Có lẽ tôi không hiểu các thuật ngữ trong tin nhắn? Tôi cũng đã tìm kiếm chuỗi thông báo chính xác ("Can be joined with assignment") không có kết quả.

ImagePagerAdapter.kt

abstract class ImagePagerAdapter(protected var context: Context) : PagerAdapter() { 
    protected var inflater: LayoutInflater 
    protected var images: List<Uri> 

    interface ImageLoadingListener { 
     fun onLoadingComplete() 
     fun onLoadingStarted() 
    } 

    init { 
     this.inflater = LayoutInflater.from(context) 
     this.images = emptyList() 
    } 

    override fun getCount(): Int { 
     return images.size 
    } 

    override fun isViewFromObject(view: View, `object`: Any): Boolean { 
     return view === `object` 
    } 

    override fun destroyItem(container: ViewGroup, position: Int, `object`: Any) { 
     container.removeView(`object` as View) 
    } 

    fun bindImages(images: List<Uri>) { 
     this.images = images 
    } 
} 

Nhiều cảm ơn trước!

Trả lời

14

Nó nói với bạn rằng thay vì có một init khối riêng biệt, bạn có thể khởi tạo các biến tại nơi bạn đã tuyên bố họ trong lớp, như vậy:

protected var inflater: LayoutInflater = LayoutInflater.from(context) 
protected var images: List<Uri> = emptyList() 

Bạn nên nhận được Alt+Enter hành động ý tại nơi các cảnh báo để làm viết lại điều này cho bạn, như thế này:

Join declaration and assignment intention action

Bên cạnh đó, theo hình thức này, bạn có thể tiêu diệt các loại lên một chút Lik e này:

protected var inflater = LayoutInflater.from(context) 
protected var images = emptyList<Uri>() 
+1

Cảm ơn bạn! Có ý nghĩa. Kỳ lạ thay, tôi không thấy hành động ý định "Tham gia khai báo và chuyển nhượng" cho đến khi tôi nhấn 'Alt + Enter' để kéo lên trình đơn tác vụ. Có lẽ đó là một lỗi? Dù sao, rất vui vì điều này đã được giải quyết. Cảm ơn bạn đã phản hồi về cách xóa các khai báo kiểu. Học nhanh :) – madcow

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