Déplacement et disparition de lignes de code; problème avec l'éditeur XML d'Eclipse

95

Parfois, mon code se déplace tout seul ou disparaît tout simplement dans l'éditeur XML Eclipse.

Yikes!

Lorsque je surligne le code affecté, les lignes en surbrillance essaient de se corriger. Mais lorsque je fais défiler ou que je fais glisser la souris dans la direction opposée, le code change à nouveau. En substance, j'aurai des lignes de code répétitives, manquantes et brisées affichées à partir d'un fichier sans erreur. Les fichiers concernés font la compilation et si je ferme / les Rouvrir ce problème va, pour le moment. Des idées sur ce qui se passe?


Ajout: Jeff Axelrod a fourni un lien vers un nouveau rapport de bogue avec Google.

Sam
la source
Cela me semble être un problème graphique. Quelle est votre version de système d'exploitation et d'Eclipse?
sd
Vista et Eclipse 3.7.2 J'ai regardé autour du site de bogues Eclipse, mais pas de chance. Il me manque peut-être un mot-clé descriptif?
Sam
2
J'ai le même problème. Win7 Pro 32 bits et Eclipse 3.7.2 avec android 17.0.0 ... Même scénario que vous décrivez dans votre réponse. Je ne trouve aucun rapport de bogue non plus.
Pat
Je vis aussi ça, ça me rend fou ... Dans mon cas, utiliser Windows XP avec eclipse indigo. Le problème se produit toujours je passe de la mise en page graphique à l'éditeur xml
mdelolmo
1
Rapport de bogue Android déposé ici .
Jeff Axelrod

Réponses:

32

Ce bogue est (enfin) corrigé dans ADT 21. Le correctif est maintenant disponible dans ADT 21 Preview 9, posté il y a quelques minutes, ici: https://android-review.googlesource.com/#/c/44936/1

La raison pour laquelle vous obtenez des artefacts visuels étranges est que si un fichier contient des fins de ligne DOS brisées (plusieurs retours chariot sans nouvelle ligne pour chaque retour chariot), Eclipse devient très confus. C'est le problème d'Eclipse https://bugs.eclipse.org/bugs/show_bug.cgi?id=375421 .

Le correctif comporte deux parties: (1) Premièrement, ADT a été corrigé de telle sorte qu’il n’introduit plus ces séquences \ r \ r dans le document. Cela garantit que vous n'obtenez pas de nouveaux documents qui déclenchent le comportement d'édition étrange, mais cela ne corrige pas rétroactivement les documents plus anciens avec ces fins de ligne, donc si vous les ouvrez, vous obtenez toujours un comportement d'édition étrange.

(2) Deuxièmement, il y a un nouveau contrôle des peluches qui recherche les fins de ligne brisée dans les documents. Cela s'exécute de manière incrémentielle, donc si vous éditez un fichier XML qui a ce problème, ADT ajoutera un marqueur d'erreur pour ce problème - avec un correctif rapide pour effectuer une intervention chirurgicale sur le document pour le résoudre.

En bref: Obtenez ADT 21 Preview 9; exécutez Lint sur vos projets et recherchez les plaintes concernant les fichiers contenant des fins de ligne interrompues, et s'il en trouve, appliquez le correctif rapide. À partir de maintenant, les modifications ultérieures avec l'éditeur de mise en page devraient conserver les fichiers au format cohérent.

Pour info, le correctif pertinent est ici: https://android-review.googlesource.com/#/c/44936/

Les instructions pour mettre à jour facilement les outils SDK et le plugin Eclipse ADT sont ici: http://tools.android.com/preview-channel

- Tor (de l'équipe des outils Android)

Tor Norbye
la source
Merci d'avoir pris le temps de répondre en personne, jusqu'à présent, cela fonctionne très bien! Pour ceux qui ne souhaitent pas télécharger le code source et construire les outils localement, suivez simplement ces deux étapes pour installer une version pré-construite. (Lisez Installer le plugin Eclipse si vous avez oublié comment faire la deuxième étape.)
Sam
Fonctionne très bien pour moi. Je suis dans Eclipse Juno. Je viens d'aller dans Aide> Installer un nouveau logiciel> Qu'est-ce qui est déjà installé? Ensuite, j'ai sélectionné tous les trucs Android de Google, sélectionné Update, et maintenant la vie est belle à nouveau.
rodrigo-silveira
32

Après quelques tests, j'ai trouvé que l'option "Formater automatiquement le XML édité par l'éditeur de mise en page visuelle" (dans Préférences | Android | Editeurs) pourrait être le coupable ici.

Avec mes tests, j'ai constaté que la modification d'une propriété (telle que layout_gravity) en mode de conception de mise en page graphique gâche toujours l'affichage visuel du fichier lorsque je retourne au mode XML (texte) lorsque cette option est activée mais que je n'ai aucun problème quand il est éteint.

Si vous souhaitez formater le XML à votre retour du mode de conception Mise en page graphique, utilisez simplement le raccourci Ctrl+ Shift+ F. De plus, je n'ai vu aucun problème avec l'utilisation de l'option "Formater lors de l'enregistrement"; même lorsque je l'utilise en mode de mise en page graphique; vous pouvez donc utiliser Ctrl+ à la Splace pendant que vous êtes toujours en mode de mise en page graphique pour enregistrer et formater votre XML.

J'ai essayé d'autres options d'éditeur comme "Afficher l'indicateur de plage" ou "Utiliser des caractères pour afficher les changements de règle verticale" mais je n'ai vu aucune différence de comportement avec l'activation ou la désactivation de ces options.

Enfin, pour corriger l'affichage visuel du fichier lorsqu'il est corrompu; J'ai trouvé que l'utilisation du raccourci: Ctrl+ A, Ctrl+ C, Ctrl+ Vest un peu plus facile que de fermer / rouvrir le fichier. Cela équivaut à faire un Sélectionner tout, Copier, Coller; copier efficacement l'ensemble du fichier XML sur lui-même.

SylvainL
la source
4
En utilisant ADT version 20120624 ... et Indigo Service Release 2 et SDK Tools Rev 20, et avec "Formater automatiquement le XML ..." pas actif, j'ai toujours des lignes qui disparaissent et se transforment en d'autres lignes.
Brian
1
Essayez avec Juno. Pour le moment, je ne parviens plus à reproduire ce bug avec Juno. Cependant, il existe également d'autres bogues avec Juno. Par exemple, à un moment donné avec deux fichiers XML ouverts, la touche de suppression agissait sur le mauvais fichier: essayer de supprimer un caractère dans un fichier supprimait à la place un caractère dans l'autre fichier. Cependant, la touche Retour arrière était OK. Je devrai également changer la configuration par défaut eclipse.ini car de temps en temps, j'obtiens un message d'erreur concernant un manque d'espace de tas lorsque j'essaye d'exécuter le EXE sur l'émulateur. Avez-vous vérifié les versions 32 bits et 64 bits?
SylvainL
Je crois que j'utilisais uniquement la version 32 bits.
Brian
C'est la meilleure réponse à ce jour car elle réduit la fréquence à laquelle cette erreur se produit, mais elle ne l'élimine pas, donc la question reste ouverte.
Sam
1
J'ai toujours ce problème parfois mais pas avec l'éditeur graphique: à la place, c'est avec le fichier AndroidManifest.xml; qui utilisent un autre éditeur. C'est avec la dernière version - Juno mais je dois admettre que ces derniers temps, je n'ai pas eu beaucoup de temps pour travailler sur mon application Android donc je ne peux pas vraiment le dire avec certitude.
SylvainL
12

Toujours en train de rencontrer ce bug sur Juno (Eclipse 4.2.0, ADT r20).

Ma solution: allez dans Fenêtre -> Préférences -> Android -> Éditeurs. J'ai coché "Formater XML en utilisant le XML standard d'Android ..." et "Utiliser les paramètres Eclipse pour l'indentation ...." . Cela a résolu le problème pour moi.

Vaiden
la source
1
Non. Décochez simplement "Formater XML en utilisant le XML standard d'Android ...". Cela corrigera le problème XML étrange, mais vous devez également vivre avec la convention Eclipse.
tom_mai78101
Personnellement, je préfère la convention Eclipse; celui d'Android ne fait pas la différence entre le crochet de fermeture de balise ouverte ( >) et le crochet de fermeture de balise autonome ( />) pour déterminer s'il faut précéder d'un espace (l'option est limitée aux deux ou à aucun). Cela semble être un problème trivial, mais pour une raison quelconque, je le trouve très irritant.
JAB
12

EDIT: contient une méthode plus rapide, elle a donc été mise en avant:

Ctrl+ F -> remplir comme ça:

  1. "Rechercher"          "\ r \ r \ n"
  2. "Remplacer"    "\ r \ n"
  3. Basculez "Expression régulière" sur ON
  4. cliquez sur le bouton "Tout remplacer"
  5. Ctrl+A
  6. désélectionner le texte.
  7. être heureux =)

L'original était ici: ne cachez pas ce problème, si vous pouvez le résoudre. Parfois, même la fermeture du fichier XML n'a pas aidé.

Pour résoudre ce problème, examinons la raison. Tout d'abord, activez "Afficher les caractères d'espaces" ( Fenêtre> Préférences> Général> Éditeurs> Éditeurs de texte> Afficher les caractères d'espaces )

Revenez ensuite à votre fichier XML.

entrez la description de l'image ici

Dans l'image mise à l'échelle, vous pouvez voir la différence entre les couleurs du symbole "\ n";

puis placez simplement le curseur sur ce symbole, qui est plus sombre.
entrez la description de l'image ici

regardez, deux lignes ont été sélectionnées 0o ... c'est peut-être la raison!

supprimez-le simplement et appuyez sur le bouton "Entrée" ou "Retour" pour ajouter le symbole "\ n". entrez la description de l'image ici
J'espère que cela vous aidera.


vous pouvez également trouver l'autre symbole de fin de ligne:
entrez la description de l'image ici


Supprimez-le aussi, et votre XML aura une belle apparence!

PS désolé pour les hyperliens, je suis novice et sur SO je ne peux pas télécharger d'image ou plus de 2 liens. alors j'espère que vous comprendrez sans photos supplémentaires;)

PPS Merci aux gars qui votent, maintenant je peux fournir des images.

Dvide Leprechaun
la source
Merci beaucoup. Je n'ai pas pu faire fonctionner le commentaire le plus voté, mais celui-ci a très bien fonctionné.
public static void
4

J'ai eu la même difficulté et j'ai finalement trouvé la solution: Faites un clic droit dans l'éditeur, sélectionnez Source/Cleanup Document.

pcs
la source
0

J'ai eu le même problème. Les étapes suivantes étaient la solution. Link suggère que cela fonctionne pour les autres.

  1. Allez dans Préférences -> touches
  2. Annuler la liaison copier, coller et couper (appuyez sur «appliquer», puis sur «ok»)
  3. répéter l'étape 1
  4. Restaurez les commandes indépendantes de l'étape 2 (je n'ai pas restauré la coupe, mais je suis sûr que tout ira bien)

Notez qu'il y a 2 liaisons pour chacune des 3 commandes

  1. Dissocier la fonction secondaire pour copier et coller (laissez ctl + c / ctl + v [copier / coller] lié)

À ce stade, vous ne devriez avoir que 2 liaisons définies pour effectuer un copier / coller (c'est-à-dire ctl + c / ctl + v)

  1. Appuyez sur Appliquer -> OK

Cette solution a été trouvée ici .

Stephen
la source
0

Lorsque ce bogue apparaît avec les nouvelles versions d'ADT (qui sont obligatoires pour la correction et où le bogue ne devrait pas apparaître souvent), utilisez simplement l'outil Lint pour le corriger.

Trouvez-le dans les avertissements de peluche et cliquez sur l' icône d' ampoule jaune dans le coin supérieur droit de cette liste d'avertissements de peluche.

J'espère que cela aidera quelqu'un

Ewoks
la source