Líneas de código en movimiento y desapareciendo; problema con el editor XML de Eclipse


95

A veces, mi código se mueve por sí solo o simplemente desaparece en el editor XML de Eclipse.

¡Ay!

Cuando resalto el código afectado, las líneas resaltadas intentan corregirse. Pero cuando desplazo o arrastro el mouse en la dirección opuesta, el código cambia nuevamente. En esencia, tendré líneas de código repetidas, faltantes y discontinuas que se mostrarán desde un archivo que de otro modo no tendría errores. Los archivos afectados hacen de compilación y si cerrar / abrir de nuevo a este problema desaparece, por el momento. ¿Alguna idea de lo que está pasando?


Además: Jeff Axelrod proporcionó un enlace a un nuevo informe de error con Google.


Me suena como un problema de gráficos. ¿Cuál es su sistema operativo y la versión de Eclipse?
SD

Vista y Eclipse 3.7.2 Miré a mi alrededor en el sitio de errores de Eclipse, pero no tuve suerte. ¿Quizás me falta una palabra clave descriptiva?
Sam

2
Estoy teniendo el mismo problema. Win7 Pro de 32 bits y Eclipse 3.7.2 con Android 17.0.0 ... El mismo escenario que describe en su respuesta. Tampoco se pueden encontrar informes de errores.
Pat

También estoy experimentando esto, me está volviendo loco ... En mi caso, usando Windows XP con eclipse indigo. El problema ocurre siempre que cambio del diseño gráfico al editor xml
mdelolmo

1
Informe de error de Android presentado aquí .
Jeff Axelrod

Respuestas:


32

Este error (finalmente) se corrigió en ADT 21. La solución ahora está disponible en ADT 21 Preview 9, publicado hace unos minutos, aquí: https://android-review.googlesource.com/#/c/44936/1

La razón por la que obtiene artefactos visuales extraños es que si un archivo contiene terminaciones de línea DOS rotas (múltiples retornos de carro sin una nueva línea para cada retorno de carro), Eclipse se confunde mucho. Ese es el problema de Eclipse https://bugs.eclipse.org/bugs/show_bug.cgi?id=375421 .

La solución consta de dos partes: (1) Primero, ADT se corrigió de tal manera que ya no introduce estas secuencias \ r \ r en el documento. Esto asegura que no obtenga documentos nuevos que desencadenan el comportamiento de edición extraño, pero no corrige de forma retroactiva documentos más antiguos con estos finales de línea, por lo que si los abre, seguirá teniendo un comportamiento de edición extraño.

(2) En segundo lugar, hay una nueva comprobación de pelusa que busca las terminaciones de líneas discontinuas en los documentos. Esto se ejecuta de forma incremental, por lo que si edita un archivo XML que tiene este problema, ADT agregará un marcador de error para este problema, junto con una corrección rápida para realizar una cirugía en el documento para solucionarlo.

En resumen: obtenga ADT 21 Preview 9; ejecute Lint en sus proyectos y busque cualquier queja sobre archivos que contengan finales de línea discontinua y, si encuentra alguna, aplique la corrección rápida. A partir de ahora, las ediciones posteriores con el editor de diseño deberían mantener los archivos formateados de forma coherente.

FYI, la solución relevante está aquí: https://android-review.googlesource.com/#/c/44936/

Las instrucciones para actualizar fácilmente las herramientas SDK y el complemento Eclipse ADT están aquí: http://tools.android.com/preview-channel

- Tor (del equipo de herramientas de Android)


Gracias por tomarse el tiempo de responder en persona, ¡hasta ahora funciona muy bien! Para aquellos que no desean descargar el código fuente y construir las herramientas localmente, simplemente siga estos dos pasos para instalar una versión prediseñada. (Lea Instalar el complemento Eclipse si olvidó cómo hacer el paso dos).
Sam

Funciona muy bien para mi. Estoy en Eclipse Juno. Simplemente fue a Ayuda> Instalar nuevo software> ¿Qué está instalado? Luego seleccioné todas las cosas de Android de Google, seleccioné Actualizar, y ahora la vida es buena nuevamente.
rodrigo-silveira

32

Después de algunas pruebas, descubrí que la opción "Formatear automáticamente el XML editado por el editor de diseño visual" (en Preferencias | Android | Editores) podría ser la culpable aquí.

Con mis pruebas, descubrí que cambiar una propiedad (como layout_gravity) mientras estoy en el modo de diseño Graphical Layout siempre estropea la visualización del archivo cuando vuelvo al modo XML (texto) cuando esta opción está ACTIVADA pero que no tengo ningún problema cuando está apagado.

Si desea formatear el XML al regresar del modo de diseño Diseño gráfico, simplemente use el atajo Ctrl+ Shift+ F. Además, no vi ningún problema con el uso de la opción "Formatear al guardar"; incluso cuando lo uso en el modo de diseño gráfico; por lo que puede usar Ctrl+ en su Slugar mientras todavía está en el modo de diseño gráfico para guardar y formatear su XML.

Probé otras opciones de editores como "Mostrar indicador de rango" o "Usar caracteres para mostrar cambios en la regla vertical", pero no vi ninguna diferencia en el comportamiento al activar o desactivar estas opciones.

Finalmente, para corregir la visualización visual del archivo cuando está dañado; Descubrí que usar el atajo: Ctrl+ A, Ctrl+ C, Ctrl+ Ves un poco más fácil que cerrar / volver a abrir el archivo. Esto es equivalente a hacer Seleccionar todo, Copiar, Pegar; copiando eficazmente todo el archivo XML sobre sí mismo.


4
Usando ADT versión 20120624 ... e Indigo Service Release 2 y SDK Tools Rev 20, y con "Formatear automáticamente el XML ..." no activo, todavía tengo líneas que desaparecen y se convierten en otras líneas.
Brian

1
Prueba con Juno. En este momento, ya no puedo reproducir este error con Juno. Sin embargo, también hay otros errores con Juno. Por ejemplo, en un momento dado con dos archivos XML abiertos, la tecla de eliminación actuaba en el archivo incorrecto: intentar eliminar un carácter en un archivo era eliminar un carácter en el otro archivo. Sin embargo, la tecla de retroceso estaba bien. También tendré que cambiar la configuración predeterminada de eclipse.ini porque, de vez en cuando, recibo un mensaje de error sobre la falta de espacio en el montón cuando intento ejecutar el EXE en el emulador. ¿Verificó las versiones de 32 y 64 bits?
SylvainL

Creo que estaba usando solo la versión de 32 bits.
Brian

Esta es la mejor respuesta hasta la fecha porque reduce la frecuencia con la que ocurre este error, pero no lo elimina, por lo que la pregunta sigue abierta.
Sam

1
Todavía tengo este problema a veces, pero no con el editor gráfico: en cambio, es con el archivo AndroidManifest.xml; que utilizan otro editor. Esto es con la última versión, Juno, pero debo admitir que últimamente no tuve mucho tiempo para trabajar en mi aplicación de Android, así que no puedo estar seguro.
SylvainL

12

Sigo experimentando este error en Juno (Eclipse 4.2.0, ADT r20).

Mi solución: vaya a Ventana -> Preferencias -> Android -> Editores. Tengo "Formato XML usando el XML estándar de Android ..." y "Usar configuración de Eclipse para sangría ..." marcada. Esto resolvió mi problema.


1
No. Simplemente desmarque la opción "Formatear XML usando el XML estándar de Android ...". Arreglará la extraña falla de XML, pero también tienes que vivir con la convención de Eclipse.
tom_mai78101

Personalmente prefiero la convención Eclipse; el de Android no distingue entre corchete de cierre de etiqueta abierta ( >) y corchete de cierre de etiqueta independiente ( />) para determinar si se debe preceder con un espacio (la opción está limitada a ambos o ninguno). Parece un tema trivial, pero por alguna razón lo encuentro muy irritante.
JAB

12

EDITAR: contiene un método más rápido, por lo que se llevó a la cima:

Ctrl+ F -> llenar así:

  1. "Buscar"          "\ r \ r \ n"
  2. "Reemplazar"    "\ r \ n"
  3. Cambiar "Expresión regular" a EN
  4. presiona el botón "Reemplazar todo"
  5. Ctrl+A
  6. anular la selección del texto.
  7. se feliz =)

Original estaba aquí: no ocultes ese problema, si puedes solucionarlo. Algunas veces, incluso cerrar el archivo XML no ayudó.

Para solucionarlo, veamos el motivo. En primer lugar, active " Mostrar caracteres de espacio en blanco " ( Ventana> Preferencias> General> Editores> Editores de texto> Mostrar caracteres de espacio en blanco )

Luego, regrese a su archivo XML.

ingrese la descripción de la imagen aquí

En la imagen escalada, puede ver la diferencia de colores de símbolo "\ n";

luego coloque el cursor en ese símbolo, que es más oscuro.
ingrese la descripción de la imagen aquí

mira, se seleccionaron dos líneas 0o ... esa puede ser la razón!

así que simplemente elimínelo y presione el botón "Enter" o "Return" para agregar el símbolo "\ n". ingrese la descripción de la imagen aquí
Espero que te ayude.


también puede encontrar el otro símbolo de la línea final:
ingrese la descripción de la imagen aquí


¡Simplemente elimínelo también y su XML tendrá un aspecto excelente!

PD: lo siento por los hipervínculos, soy novato y, por lo tanto, no puedo cargar imágenes o más de 2 enlaces. así que espero que entiendas el punto sin imágenes adicionales;)

PPS Gracias al chico que votó, ahora puedo proporcionar esto con imágenes.


Muchas gracias. No pude hacer que el comentario más votado funcionara, pero este funcionó muy bien.
vacío público estático

4

Tuve la misma dificultad y finalmente encontré la solución: haga clic derecho en el editor, seleccione Source/Cleanup Document.


0

Tuve el mismo problema. Los siguientes pasos fueron la solución. Link sugiere que ha funcionado para otros.

  1. Vaya a Preferencias -> teclas
  2. Desvincular copiar, pegar y cortar (presione "aplicar", luego "aceptar")
  3. repita el paso 1
  4. Restaurar los comandos independientes del paso 2 (no restauré el corte, pero estoy seguro de que estarás bien)

Observe que hay 2 enlaces para cada uno de los 3 comandos

  1. Desvincula la función secundaria tanto para copiar como para pegar (deja ctl + c / ctl + v [copiar / pegar] enlazado)

En este punto, solo debe tener 2 enlaces configurados para realizar copiar / pegar (es decir, ctl + c / ctl + v)

  1. Presione aplicar -> Aceptar

Esta solución se encontró aquí .


0

Cuando este error aparece con nuevas versiones de ADT (que son obligatorias para la reparación y donde el error no debería aparecer con frecuencia) simplemente use la herramienta Lint para solucionarlo

Encuéntrelo en las advertencias de pelusa y haga clic en la bombilla amarilla en el icono de en la esquina superior derecha de la lista de advertencias de Lint.

Espero que ayude a alguien

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.