Vista previa de Android Studio 3.0 Faltan importaciones cuando se refabrica el código de Kotlin

Cada vez que trato de refactorizar el código Koltin en Android Studio 3.0, simplemente elimina todas mis importaciones de "nivel superior" y comienza a usar importaciones "in situ".

Al refactorizar, quiero decir, en este caso, mover el código. Entonces digamos que tengo una class en el package com.myapp . Si lo muevo a com.myapp.anotherpackage este problema ocurre

Un hecho curioso acerca de esto parece que solo sucede cuando mueves más de un file al mismo time

Como se ve:

//Before refactoring I have this import import android.support.v7.app.AppCompatActivity; class MyActivity : AppCompatActivity() { //code } 

Luego, después de refactorizar, va así

 //"top level" import is gone class MyActivity : android.support.v7.app.AppCompatActivity() { //"inline" import //code } 

enter image description here

Se vuelve aún peor si tengo que refactorizar el código nuevamente, ya que cada import está "en línea", el estudio de Android no las refactoriza, y tengo que arreglarlas a mano. Esto ya se está poniendo realmente molesto, ya que tuve que arreglar más de 100 de estos. ¿Alguna idea sobre como arreglar esto?

Esto es muy similar al error que se solucionó no hace mucho time. Los cambios relevantes no se incluyeron en el complemento de Kotlin incluido con una vista previa de As3.0. Pero estarán disponibles en la próxima actualización del complemento.

Parece que podría tratarse de un error: logré recrear el problema en IntelliJ y creé este informe de errores: https://youtrack.jetbrains.com/issue/KT-18205

Llegó tarde para join a la fiesta, pero, de todos modos. Kotlin es un lenguaje relativamente nuevo (en términos de que es oficial para Android, hace apenas un mes), por lo que el desarrollo está en pleno desarrollo en JetBrains. Y, la versión de Android Studio (3.0) no es una versión estable, así que aquí están todos los problemas conocidos de Kotlin con Android Studio. Verifique estos problemas aquí .

Ahí dice claramente:

Algunas refactorizaciones no disponibles con Kotlin

No todas las refactorizaciones de código funcionan con Kotlin, especialmente las de Android. Por ejemplo, la refacturación de código para modular Kotlin cude actualmente no funciona con Kotlin.

El Android Studio amigable con Java no está familiarizado con las funcionalidades en línea de Kotlin. Dado que esta es una nueva inclusión en Kotlin, hace que el código sea más legible (¿en realidad?) Pero no tan amigable con los progtwigdores , per se.

Habiendo dicho eso, en este momento no hay casi ninguna fuente (comprobamos algunas, otras son bienvenidas) confirmando que su problema es un problema o una mejora de Kotlin sobre Java (nuevamente muy debatible) ya que inline inlineing estaba destinado a ser una funcionalidad mejorada .

Ahora, ya es hora de que esta característica se dirija a una label oficial .

Parece que esta "refactorización" ocurre después de que se movió el file y se actualizó el package.

Como solución hasta que se solucione el error de IDE / Plugin, puede hacer lo siguiente:

Después de mover su file (refactorización), haga clic derecho en el file,

  1. Seleccionar historial local → Mostrar historial
  2. Seleccione la revisión anterior donde eliminó todas las importaciones
  3. Seleccionar revertir

Asegúrate de verificar dos veces el resultado, ya sabes que debe tener la versión correctamente movida / refactorizada.


Ocasionalmente, esto no parece funcionar, pero puede intentar Deshacer (Mover) y moverlo de nuevo.

Probado en AS 3.0 Canary 3

  • Kotlin: unidad testing afirmar object después de gson
  • ¿Qué function de lenguaje en Kotlin puede causar pérdidas de memory?
  • La interfaz de Java SAM creada a partir de Kotlin da ClassCastException
  • Error del complemento de Kotlin en el estudio Android
  • Desasignando una variable en kotlin
  • Cómo crear el flask gordo con gradle kotlin script
  • Atributo Kotlin RuntimeInvisibleParameterAnnotations: MyType (String)
  • ¿Qué significa una firma de function de Kotlin con T. ()?
  • Kotlin spring-boot @ConfigurationProperties
  • Creación de instancia pública de class interna privada en Kotlin
  • Cómo implementar una function de Kotlin a una vista