Kotlin apply () post de pelusa de extensión en Android Studio 3.0-alpha8

¡Hola, querido amigo de Stackoverflow! Tengo el siguiente código que produce un error de pelusa. problema con la pelusa

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

El post señala que this reference dentro de la function apply() apunta a la class BaseBundle que está disponible desde la API 21, que se bloqueará en la API inferior. Bundle # putString (key, valor) está definitivamente disponible en las versiones más bajas, pero hay un error en Android Studio 3.0-alpha8.

El problema es bastante extraño ya que puedo ver el código descomstackdo como este: descompilado

¿Qué tipo de Bundle reference no es un BaseBundle ?

¿Por qué tenemos error de Lint en primer lugar?

Una solución alternativa es usar let lugar de apply , como:

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

Realmente se ve como un error. Es un error conocido, pero uno podría ver por qué recibes la advertencia si buscas el código fuente de Bundle.java.

Antes de api 21 Bundle tenía un método ( marque aquí )

 public void putString(@Nullable String key, @Nullable String value) 

y la class en sí no tenía superclass. Desde api 21 Bundle amplía una class BaseBundle recién agregada y este método putString se movió a BaseBundle . Por lo tanto, cuando llama al método en la API 21 y superior, el método pertenece a BaseBundle , para la versión inferior pertenece a Bundle .

Esto está relacionado de alguna manera con el bloque de apply porque la advertencia no aparece si llama directamente al método en una variable Bundle type.