web-dev-qa-db-ja.com

Kotlin Android Studio / IntelliJ "課題に参加できます"検査警告

私はコルティンは初めてで、今のところとても好きですが、思わぬ障害が発生しました。ここでは、非常に、非常に基本的な何かが欠けていると確信していますが、それでも私は損失です。どんな助けにも感謝します。

Java Studio/IntelliJコマンドを使用して、単純なAndroidクラスをKotlinに変換しました。この変換後、方法がわからないという警告が表示されます私は15〜20のクラス(その多くははるかに複雑でした)をこのクラスの前にKotlinに変換しましたが、この警告はまだ表示されていません。

enter image description here

繰り返しますが、これは本当に基本的なものでなければならないことを知っています。しかし、変数とクラスに関するKotlinのドキュメントを注いだところ、「割り当て」や複数の変数の初期化に関連するものを一度に見つけることができませんでした。たぶん私はメッセージの用語を理解していませんか?正確なメッセージ文字列("Can be joined with assignment") 無駄に。

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
    }
}

よろしくお願いします!

21
madcow

これは、別個のinitブロックを使用する代わりに、クラス内で変数を宣言した場所で変数を初期化することができることを示しています。

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

次のように、この書き換えを行うには、警告の場所でAlt+Enterインテンションアクションを取得している必要があります。

Join declaration and assignment intention action

さらに、この形式では、次のように型を少し整理できます。

protected var inflater = LayoutInflater.from(context)
protected var images = emptyList<Uri>()
34
zsmb13