Vista previa de Android Studio 3.0 Falta las importaciones al refactorizar el código de Kotlin

Cada vez que intento refactorizar el código de Koltin en Android Studio 3.0 simplemente elimina todas mis importaciones de "nivel superior" y empieza a utilizar importaciones "inplace".

Por refactorización quiero decir, en este caso, mover el código alrededor. Así que digamos que tengo una clase en el paquete com.myapp . Si lo muevo a com.myapp.anotherpackage este problema ocurre

Un hecho curioso acerca de esto parece que sólo ocurre cuando mueve más de un archivo al mismo tiempo

Lo que parece:

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

Entonces después de la refactorización va así

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

Introduzca aquí la descripción de la imagen

Se vuelve aún peor si tengo que refactorizar el código de nuevo, ya que cada importación única es "inlined", el estudio de Android no refactorizarlos, y tengo que hacer arreglos a mano. Esto es realmente molesto ya, ya que tuve que fijar más de 100 de estos. ¿Alguna idea sobre como arreglar esto?

Esto es muy similar al bicho que fue arreglado no hace mucho tiempo. 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 siguiente actualización del complemento.

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

Es tarde para unirse a la fiesta, pero, de todos modos. Kotlin es un lenguaje relativamente nuevo (en términos de ser oficial para Android, hace apenas un mes), por lo que el desarrollo es a pleno ritmo 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. Compruebe estos problemas aquí .

Allí dice claramente:

Algunas refactoraciones no están disponibles con Kotlin

No todas las refactoraciones de código funcionan con Kotlin, especialmente las de Android. Por ejemplo, la refactorización de código para modularizar Kotlin cude actualmente no funciona con Kotlin.

El Android Friendly Studio de Java no está familiarizado con las funcionalidades en línea de Kotlin. Puesto que, esto es una nueva inclusión en Kotlin, hace el código más legible (realmente?) Pero no tan programador-amistoso , per se.

Dicho esto, en este momento casi no hay ninguna fuente (comprobado unos pocos, otros son bienvenidos), confirmando que su problema es un problema o una mejora de Kotlin sobre Java (de nuevo muy discutible) ya que inline -ing era una funcionalidad mejorada .

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

Parece que esta "refactorización" sucede después de que el archivo fue movido y el paquete actualizado.

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

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

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

Asegúrese de comprobar el resultado, usted sabe que debe tener la versión correctamente movido / refactorizado.


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

Probado en AS 3.0 Canary 3

  • Jackson no puede cargar tipos JDK7 en Android
  • La documentación de Kotlin no admite etiquetas como '<p>' well
  • Dagger 2 Named no se puede proporcionar sin un método @Provides
  • Generar errores con el nuevo kotlin 1.1, kapt no puede analizar parámetros de conexión de datos
  • Kotlin y la nueva ActivityTestRule: La @Rule debe ser pública
  • Android Kotlin: Error Referencia sin resolver: DaggerAppComponent
  • ¿Cómo acceder a "Activity.this" en Kotlin?
  • WeakReference no funciona en Kotlin
  • La instalación del proyecto Android de Kotlin falla con INSTALL_FAILED_DEXOPT
  • Cómo recurrir completamente a SortedList de RecyclerView
  • No se pueden resolver los métodos de registro de Anko
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.