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
- Vistas de Android personalizadas con Kotlin
- Observable.combineInferencia de tipo más reciente en kotlin
- Error: Error de ejecución de la tarea ': app: compileDebugKotlin'. > Error de compilación. Ver registro para más detalles
- Soporte de transición de fragmentos 25.1.0 con Recyclerview
- Kotlin y conexión de datos de Android
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 }
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?
- Kotlin cuando con varios valores no funciona cuando el valor es una vista de Android
- Smartcast es imposible porque propery tiene getter abierto o personalizado
- ¿Hay alguna manera de reutilizar una instancia de Job?
- Referencia no resuelta: Kotlin necesita 2 compilaciones después de limpiar para recoger código al usar kapt
- ¿Trabaja Butknife 7.x con Kotlin M14?
- Extensiones y fragmentos de Android de Kotlin
- Kotlin android proguard error
- Gson no puede analizar una cadena de datos de formato json en Kotlin
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,
- Seleccione Historial local → Mostrar historial
- Seleccione la revisión anterior donde eliminó todas las importaciones
- 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