Kotlin Android Studio/IntelliJ"可以与任务一起加入"检查警告

mad*_*cow 19 android intellij-idea kotlin android-studio

我是Koltin的新手并且到目前为止真的非常喜欢它,但我遇到了麻烦.我确信我在这里遗漏了一些非常基本的东西,但是,我很遗憾,我很感激任何帮助.

我使用Android Studio/IntelliJ命令将一个简单的java类转换为Kotlin.转换后,我收到检查警告,我不确定如何解决.在本课程之前,我已经将15-20个课程(其中许多课程复杂得多)改为Kotlin,并且还没有看到这个警告.

在此输入图像描述

我再次知道这一定是非常基本的东西.但是我通过关于变量和类的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
    }
}
Run Code Online (Sandbox Code Playgroud)

提前谢谢了!

zsm*_*b13 35

它告诉你init,你可以在你在类中声明它们的地方初始化变量而不是单独的块,如下所示:

protected var inflater: LayoutInflater = LayoutInflater.from(context)
protected var images: List<Uri> = emptyList()
Run Code Online (Sandbox Code Playgroud)

你应该Alt+Enter在警告的地方得到意图动作,为你做这个重写,如下所示:

加入声明和分配意图行动

此外,在这种形式,你可以清理类型有点像这样:

protected var inflater = LayoutInflater.from(context)
protected var images = emptyList<Uri>()
Run Code Online (Sandbox Code Playgroud)

  • 谢谢!说得通.奇怪的是,在我点击"Alt + Enter"手动拉出动作菜单之前,我没有看到"加入声明和赋值"意图动作.也许这是一个错误?无论如何,很高兴这个问题得到了解决.感谢您提供有关如何清理类型声明的反馈.快速学习:) (2认同)
  • 属性初始值设定项和初始值设定项块在类中自上而下运行,交错运行。请参阅此处的文档:https://kotlinlang.org/docs/reference/classes.html#constructors (2认同)