Android Studio 3.0-alpha8中的Kotlin apply()扩展lint消息

Tom*_*tel 6 android lint kotlin android-studio

我有以下代码产生以下lint错误. 皮棉问题

fun newInstance(message: String?): DialogFragment {
    return DialogFragment().apply {
        arguments = Bundle().apply {
            putString("arg", message)
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

该消息指出函数this内部的引用apply()指向BaseBundle自API 21以来可用的类,它将在较低的API上崩溃.Bundle #putString(key,value)绝对可用于较低版本,但Android Studio 3.0-alpha8中存在错误.

这个问题很奇怪,因为我可以看到反编译的代码如下: 反编译

哪个参考Bundle类型不是BaseBundle.

为什么我们首先有Lint错误?

Kev*_*tel 1

一种解决方法是使用let代替apply,例如:

fun newInstance(message: String?): DialogFragment {
    return DialogFragment().apply {
        arguments = Bundle().let {
            it.putString("arg", message)
            it
        }
    }
}
Run Code Online (Sandbox Code Playgroud)