Linee di codice in movimento e di fuga; problemi con l'Editor XML di Eclipse


95

A volte il mio codice si muove da solo o scompare nell'editor XML di Eclipse.

Yikes!

Quando evidenzi il codice interessato, le righe evidenziate cercano di correggersi. Ma quando scorro o trascino il mouse nella direzione opposta, il codice si sposta di nuovo. In sostanza, verranno visualizzate righe di codice ripetute, mancanti e interrotte da un file altrimenti privo di errori. I file interessati si compilano e se li chiudo / riapro questo problema per il momento scompare. Qualche idea su cosa sta succedendo?


Aggiunta: Jeff Axelrod ha fornito un collegamento a una nuova segnalazione di bug con Google.


Mi sembra un problema grafico. Qual è il tuo sistema operativo e la versione di Eclipse?
sd

Vista ed Eclipse 3.7.2 Mi sono guardato intorno nel sito dei bug di Eclipse, ma senza fortuna. Forse mi manca una parola chiave descrittiva?
Sam

2
Ho lo stesso problema. Win7 Pro a 32 bit ed Eclipse 3.7.2 con Android 17.0.0 ... Stesso scenario che descrivi nella tua risposta. Non riesco nemmeno a trovare alcuna segnalazione di bug.
Pat

Sto anche sperimentando questo, mi sta facendo impazzire ... Nel mio caso, utilizzo Windows XP con eclipse indigo. Il problema si verifica sempre
passo

1
Segnalazione di bug Android archiviata qui .
Jeff Axelrod

Risposte:


32

Questo bug è stato (finalmente) corretto in ADT 21. La correzione è ora disponibile in ADT 21 Preview 9, pubblicato pochi minuti fa, qui: https://android-review.googlesource.com/#/c/44936/1

Il motivo per cui si ottengono strani artefatti visivi è che se un file contiene terminazioni di riga DOS interrotte (più ritorni a capo senza una nuova riga per ogni ritorno a capo), Eclipse diventa molto confuso. Questo è il problema di Eclipse https://bugs.eclipse.org/bugs/show_bug.cgi?id=375421 .

La correzione comprende due parti: (1) Innanzitutto, ADT è stato corretto in modo tale da non introdurre più queste \ r \ r sequenze nel documento. Questo assicura che non si ottengano nuovi documenti che attivano lo strano comportamento di modifica, ma non risolve retroattivamente i documenti più vecchi con queste terminazioni di riga, quindi se li apri, ottieni comunque uno strano comportamento di modifica.

(2) In secondo luogo, c'è un nuovo controllo dei pelucchi che cerca le terminazioni delle linee spezzate nei documenti. Questo viene eseguito in modo incrementale, quindi se modifichi un file XML che presenta questo problema, ADT aggiungerà un indicatore di errore per questo problema, insieme a una correzione rapida per eseguire un intervento chirurgico sul documento per risolverlo.

In breve: ottieni l'anteprima 9 di ADT 21; esegui Lint sui tuoi progetti e cerca eventuali reclami su file contenenti terminazioni di linee interrotte e, se ne trova, applica la correzione rapida. D'ora in poi, ulteriori modifiche con l'editor di layout dovrebbero mantenere i file formattati in modo coerente.

Cordiali saluti, la correzione pertinente è qui: https://android-review.googlesource.com/#/c/44936/

Le istruzioni per aggiornare facilmente gli strumenti SDK e il plug-in ADT di Eclipse sono disponibili qui: http://tools.android.com/preview-channel

- Tor (dal team di strumenti Android)


Grazie per aver dedicato del tempo per rispondere di persona, finora funziona benissimo! Per coloro che non vogliono scaricare il codice sorgente e creare gli strumenti in locale, è sufficiente seguire questi due passaggi per installare una versione precostruita. (Leggi Installazione del plug-in Eclipse se hai dimenticato come eseguire il passaggio due.)
Sam

Funziona alla grande per me. Sono in Eclipse Juno. Basta andare su Aiuto> Installa nuovo software> Cosa è già installato? Quindi ho selezionato tutte le cose Android da Google, selezionato Aggiorna e ora la vita è di nuovo bella.
rodrigo-silveira

32

Dopo alcuni test, ho scoperto che l'opzione "Formatta automaticamente l'XML modificato dall'editor di layout visivo" (in Preferenze | Android | Editors) potrebbe essere il colpevole qui.

Con i miei test, ho scoperto che la modifica di una proprietà (come layout_gravity) durante la modalità di progettazione del layout grafico rovina sempre la visualizzazione visiva del file quando torno alla modalità XML (testo) quando questa opzione è ON ma che non ho problemi quando è spento.

Se vuoi formattare l'XML al tuo ritorno dalla modalità di progettazione del layout grafico, usa semplicemente la scorciatoia Ctrl+ Shift+ F. Inoltre, non ho riscontrato alcun problema con l'utilizzo dell'opzione "Formato al salvataggio"; anche quando lo uso in modalità Layout grafico; così puoi usare Ctrl+ Smentre sei ancora nel modo Layout grafico sia per salvare che per formattare il tuo XML.

Ho provato altre opzioni di editor come "Mostra indicatore di intervallo" o "Usa caratteri per mostrare le modifiche nel righello verticale" ma non ho notato alcuna differenza nel comportamento con l'attivazione o la disattivazione di queste opzioni.

Infine, per correggere la visualizzazione visiva del file quando è danneggiato; Ho scoperto che usare la scorciatoia: Ctrl+ A, Ctrl+ C, Ctrl+ Vè un po 'più facile che chiudere / riaprire il file. Ciò equivale a fare un Seleziona tutto, Copia, Incolla; copiando efficacemente l'intero file XML su se stesso.


4
Utilizzando ADT versione 20120624 ... e Indigo Service Release 2 e SDK Tools Rev 20, e con "Formatta automaticamente XML ..." non attivo, ho ancora delle linee che scompaiono e si trasformano in altre linee.
Brian

1
Prova con Juno. Al momento non sono più in grado di riprodurre questo bug con Juno. Tuttavia, ci sono anche altri bug con Juno. Ad esempio, una volta con due file XML aperti, il tasto di cancellazione stava agendo sul file sbagliato: provare a cancellare un carattere in un file stava invece eliminando un carattere nell'altro file. Tuttavia, il tasto Backspace era OK. Dovrò anche modificare la configurazione predefinita di eclipse.ini perché di tanto in tanto ricevo un messaggio di errore sulla mancanza di spazio nell'heap quando provo a eseguire l'EXE sull'emulatore. Hai controllato sia la versione a 32 bit che a 64 bit?
SylvainL

Credo che stavo usando solo la versione a 32 bit.
Brian

Questa è la migliore risposta fino ad oggi perché riduce la frequenza con cui si verifica questo errore, ma non lo elimina, quindi la domanda è ancora aperta.
Sam

1
A volte ho ancora questo problema ma non con l'Editor grafico: invece, è con il file AndroidManifest.xml; che utilizzano un altro editor. Questo è con l'ultima versione - Juno ma devo ammettere che ultimamente non ho avuto molto tempo per lavorare sulla mia applicazione Android, quindi non posso dirlo con certezza.
SylvainL

12

Si verifica ancora questo bug su Juno (Eclipse 4.2.0, ADT r20).

La mia soluzione: vai su Finestra -> Preferenze -> Android -> Editor. Ho selezionato sia "Formato XML utilizzando lo standard Android XML ..." e "Usa impostazioni Eclipse per il rientro ..." . Questo ha risolto il problema per me.


1
No. Deseleziona semplicemente "Formatta XML utilizzando lo standard Android XML ...". Risolverà lo strano glitch XML, ma devi anche convivere con la convenzione di Eclipse.
tom_mai78101

Personalmente preferisco la convenzione Eclipse; quello Android non fa differenza tra parentesi di chiusura tag aperta ( >) e parentesi di chiusura tag standalone ( />) per determinare se precedere uno spazio (l'opzione è limitata a entrambi o nessuno dei due). Sembra un problema banale, ma per qualche motivo lo trovo molto irritante.
JAB

12

EDIT: contiene un metodo più veloce, quindi è stato portato in cima:

Ctrl+ F -> riempi così:

  1. "Trova"          "\ r \ r \ n"
  2. "Sostituisci"    "\ r \ n"
  3. Imposta "Espressione regolare" su ON
  4. premi il pulsante "Sostituisci tutto"
  5. Ctrl+A
  6. deseleziona il testo.
  7. sii felice =)

L'originale era qui: non nascondere il problema, se puoi risolverlo. Alcune volte anche la chiusura del file XML non ha aiutato.

Per risolverlo, diamo un'occhiata al motivo. Prima di tutto attiva " Mostra caratteri spazi bianchi " ( Finestra> Preferenze> Generali> Editor> Editor di testo> Mostra caratteri spazi )

Quindi torna al tuo file XML.

inserisci qui la descrizione dell'immagine

Nell'immagine in scala potresti vedere la differenza dei colori del simbolo "\ n";

quindi posiziona il cursore su quel simbolo, che è più scuro.
inserisci qui la descrizione dell'immagine

guarda, due linee sono state selezionate 0o ... questo potrebbe essere il motivo!

quindi cancellalo e premi il pulsante "Invio" o "Invio" per aggiungere il simbolo "\ n". inserisci qui la descrizione dell'immagine
Spero ti aiuti.


inoltre potresti trovare l'altro simbolo di endline:
inserisci qui la descrizione dell'immagine


Basta cancellarlo e il tuo XML avrà un aspetto fantastico!

PS scusa per i collegamenti ipertestuali, sono un principiante e quindi non riesco a caricare l'immagine o più di 2 collegamenti. quindi spero che otterrai il punto senza ulteriori immagini;)

PPS Grazie al tizio che vota, ora posso fornire questo con le immagini.


Molte grazie. Non sono riuscito a far funzionare il commento più votato, ma questo ha funzionato alla grande.
public static void

4

Ho avuto la stessa difficoltà e finalmente ho trovato la soluzione: fare clic con il tasto destro nell'editor, selezionare Source/Cleanup Document.


0

Ho avuto lo stesso problema. I passaggi seguenti sono stati la soluzione. Link suggerisce che ha funzionato per gli altri.

  1. Vai a Preferenze -> chiavi
  2. Annulla l'associazione di copia, incolla e taglia (premi "applica", quindi "ok")
  3. ripetere il passaggio 1
  4. Ripristina i comandi non associati dal passaggio 2 (non ho ripristinato il taglio, ma sono sicuro che staresti bene)

Notare che ci sono 2 associazioni per ciascuno dei 3 comandi

  1. Annulla l'associazione della funzione secondaria sia per copia che per incolla (lasciare ctl + c / ctl + v [copia / incolla] associato)

A questo punto dovresti avere solo 2 associazioni impostate per eseguire copia / incolla (ad esempio, ctl + c / ctl + v)

  1. Premi applica -> OK

Questa soluzione è stata trovata qui .


0

Quando questo bug appare con le nuove versioni di ADT (che sono obbligatorie per la correzione e dove il bug non dovrebbe apparire spesso) usa lo strumento Lint per risolverlo.

Trovalo negli avvisi di lanugine e fai clic sull'icona della lampadina gialla nell'angolo in alto a destra dell'elenco degli avvisi di lanugine.

Spero che possa aiutare qualcuno

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.