Movendo e desaparecendo linhas de código; problemas com o Editor XML do Eclipse


95

Às vezes, meu código se move por conta própria ou simplesmente desaparece no editor XML do Eclipse.

Caramba!

Quando realço o código afetado, as linhas realçadas tentam se corrigir. Mas quando eu rolo ou arrasto o mouse na direção oposta, o código muda novamente. Em essência, terei linhas de código repetidas, ausentes e interrompidas sendo exibidas a partir de um arquivo sem erros. Os arquivos afetados são compilados e se eu fechar / reabri-los, esse problema vai embora, por enquanto. Alguma ideia do que está acontecendo?


Adição: Jeff Axelrod forneceu um link para um novo relatório de bug com o Google.


Parece um problema gráfico para mim. Qual é o seu sistema operacional e versão do Eclipse?
sd

Vista e Eclipse 3.7.2 Procurei no site de bug do Eclipse, mas não tive sorte. Talvez esteja faltando uma palavra-chave descritiva?
Sam,

2
Estou tendo o mesmo problema. Win7 Pro de 32 bits e Eclipse 3.7.2 com android 17.0.0 ... Mesmo cenário que você descreve em sua resposta. Também não foi possível encontrar nenhum relatório de bug.
Pat de

Eu também estou passando por isso, está me deixando louco ... No meu caso, usando o Windows XP com Eclipse Indigo. O problema acontece sempre que eu
mudo

1
Relatório de bug do Android arquivado aqui .
Jeff Axelrod

Respostas:


32

Este bug foi (finalmente) corrigido no ADT 21. A correção agora está disponível no ADT 21 Preview 9, postado alguns minutos atrás, aqui: https://android-review.googlesource.com/#/c/44936/1

O motivo de você obter artefatos visuais estranhos é que, se um arquivo contém terminações de linha DOS quebradas (vários retornos de carro sem uma nova linha para cada retorno de carro), o Eclipse fica muito confuso. Esse é o problema do Eclipse https://bugs.eclipse.org/bugs/show_bug.cgi?id=375421 .

Há duas partes para a correção: (1) Primeiro, o ADT foi corrigido de forma que não introduza mais essas sequências \ r \ r no documento. Isso garante que você não obtenha novos documentos, o que desencadeia o comportamento de edição estranho, mas não corrige retroativamente documentos mais antigos com essas terminações de linha, portanto, se você abri-los, ainda terá um comportamento de edição estranho.

(2) Em segundo lugar, há uma nova verificação de lint que procura terminações de linhas quebradas em documentos. Isso é executado de forma incremental, portanto, se você editar um arquivo XML com esse problema, o ADT adicionará um marcador de erro para esse problema - junto com uma correção rápida para realizar uma cirurgia no documento para corrigi-lo.

Resumindo: Obtenha ADT 21 Preview 9; execute o Lint em seus projetos e procure por reclamações sobre arquivos que contêm terminações de linha quebradas e, se encontrar alguma, aplique a correção rápida. A partir de agora, outras edições com o editor de layout devem manter os arquivos formatados de forma consistente.

Para sua informação, a correção relevante está aqui: https://android-review.googlesource.com/#/c/44936/

As instruções para atualizar facilmente as ferramentas SDK e o plug-in Eclipse ADT estão aqui: http://tools.android.com/preview-channel

- Tor (da equipe de ferramentas do Android)


Obrigado por responder pessoalmente. Até agora , funciona muito bem! Para aqueles que não desejam baixar o código-fonte e construir as ferramentas localmente, basta seguir estes dois passos para instalar uma versão pré- compilada . (Leia Instalando o Plug-in do Eclipse se você se esqueceu de como fazer a etapa dois.)
Sam

Funciona muito bem para mim. Estou em Eclipse Juno. Basta acessar Ajuda> Instalar novo software> O que já está instalado? Então eu selecionei todas as coisas do Android do Google, selecionei Atualizar e agora a vida está boa novamente.
rodrigo-silveira

32

Após alguns testes, descobri que a opção "Formatar automaticamente o XML editado pelo editor de layout visual" (em Preferências | Android | Editores) pode ser a culpada aqui.

Com meus testes, descobri que alterar uma propriedade (como layout_gravity) enquanto no modo de design de Layout gráfico sempre atrapalha a exibição visual do arquivo quando eu volto para o modo XML (texto) quando esta opção está ativada, mas que não tenho problemas quando está desligado.

Se você deseja formatar o XML ao retornar do modo de design de Layout Gráfico, simplesmente use o atalho Ctrl+ Shift+ F. Além disso, não vi nenhum problema em usar a opção "Formatar ao Salvar"; mesmo quando o uso no modo de Layout Gráfico; então você pode usar Ctrl+S enquanto ainda está no modo de Layout gráfico para salvar e formatar seu XML.

Eu tentei outras opções do editor como "Mostrar indicador de intervalo" ou "Usar caracteres para mostrar mudanças na régua vertical", mas não vi nenhuma diferença no comportamento ao ativar ou desativar essas opções.

Finalmente, para corrigir a exibição visual do arquivo quando está corrompido; Descobri que usar o atalho: Ctrl+ A, Ctrl+ C, Ctrl+ Vé um pouco mais fácil do que fechar / reabrir o arquivo. Isso é equivalente a selecionar tudo, copiar, colar; copiando efetivamente todo o arquivo XML sobre ele mesmo.


4
Usando ADT versão 20120624 ... e Indigo Service Release 2 e SDK Tools Rev 20, e com "Formatar automaticamente o XML ..." não ativo, ainda tenho linhas desaparecendo e se transformando em outras linhas.
Brian

1
Experimente com Juno. No momento, não consigo mais reproduzir esse bug com o Juno. No entanto, existem outros bugs com o Juno também. Por exemplo, ao mesmo tempo com dois arquivos XML abertos, a tecla de exclusão estava agindo no arquivo errado: tentar excluir um caractere de um arquivo era, em vez disso, excluir um caractere do outro arquivo. No entanto, a tecla Backspace estava OK. Também terei que alterar a configuração padrão do eclipse.ini porque, de vez em quando, recebo uma mensagem de erro sobre a falta de espaço no heap ao tentar executar o EXE no emulador. Você verificou as versões de 32 e 64 bits?
SylvainL

Acredito que estava usando apenas a versão de 32 bits.
Brian

Esta é a melhor resposta até o momento porque reduz a frequência com que esse erro ocorre, mas não o elimina, então a pergunta ainda está aberta.
Sam,

1
Ainda tenho esse problema às vezes, mas não com o Editor Gráfico: em vez disso, é com o arquivo AndroidManifest.xml; que usam outro editor. Esta é a versão mais recente - Juno, mas devo admitir que ultimamente não tive muito tempo para trabalhar no meu aplicativo Android, então não posso dizer com certeza.
SylvainL

12

Ainda experimentando esse bug no Juno (Eclipse 4.2.0, ADT r20).

Minha correção: Vá para Janela -> Preferências -> Android -> Editores. Eu marquei "Formatar XML usando XML padrão do Android ..." e "Usar configurações do Eclipse para recuo ..." . Isso resolveu o problema para mim.


1
Não. Basta desmarcar a opção "Formatar XML usando XML padrão do Android ...". Isso vai consertar o bug estranho do XML, mas você também tem que viver com a convenção do Eclipse.
tom_mai78101

Pessoalmente, prefiro a convenção Eclipse; o Android não diferencia entre colchete de fechamento de tag de abertura ( >) e colchete de fechamento de tag autônomo ( />) para determinar se deve preceder com um espaço (a opção é limitada a ambos ou nenhum). Parece um assunto trivial, mas por algum motivo acho muito irritante.
JAB

12

EDITAR: contém o método mais rápido, por isso foi trazido para o topo:

Ctrl+ F -> preencher assim:

  1. "Encontrar"          "\ r \ r \ n"
  2. "Substituir"    "\ r \ n"
  3. Mude "Expressão regular" para ON
  4. aperte o botão "Substituir tudo"
  5. Ctrl+A
  6. desmarque o texto.
  7. seja feliz =)

O original estava aqui: apenas não esconda esse problema, se você puder corrigi-lo. Algumas vezes, mesmo fechar o arquivo XML não ajudava.

Para consertar, vamos ver o motivo disso. Em primeiro lugar, ative "Mostrar caracteres de espaço em branco" ( Janela> Preferências> Geral> Editores> Editores de texto> Mostrar caracteres de espaço em branco )

Então, de volta ao seu arquivo XML.

insira a descrição da imagem aqui

Na imagem em escala, você pode ver a diferença nas cores dos símbolos "\ n";

em seguida, coloque o cursor sobre esse símbolo, que está mais escuro.
insira a descrição da imagem aqui

olha, foram selecionadas duas linhas 0o ... pode ser esse o motivo!

então apenas exclua-o e pressione o botão "Enter" ou "Retornar" para adicionar o símbolo "\ n". insira a descrição da imagem aqui
Espero que ajude você.


também você pode encontrar o outro símbolo da linha final:
insira a descrição da imagem aqui


Basta excluí-lo também e seu XML terá uma ótima aparência!

PS desculpem pelos hiperlinks, sou novato e no SO não consigo fazer upload de imagens ou mais de 2 links. então espero que você entenda sem fotos adicionais;)

PPS Obrigado ao cara que votou, agora posso fornecer as imagens.


Muito obrigado. Não consegui fazer o comentário mais votado funcionar, mas este funcionou muito bem.
público estático vazio de

4

Tive a mesma dificuldade e finalmente encontrei a solução: Clique com o botão direito no editor, selecione Source/Cleanup Document.


0

Eu tive o mesmo problema. As etapas a seguir foram a solução. O link sugere que funcionou para outros.

  1. Vá para Preferências -> teclas
  2. Desvincular copiar, colar e cortar (clique em "aplicar" e depois em "ok")
  3. repita o passo 1
  4. Restaure os comandos não acoplados da etapa 2 (não restaurei o corte, mas tenho certeza de que você ficaria bem)

Observe que há 2 ligações para cada um dos 3 comandos

  1. Desvincular função secundária para copiar e colar (deixe ctl + c / ctl + v [copiar / colar] vinculado)

Neste ponto, você deve ter apenas 2 ligações definidas para executar copiar / colar (ou seja, ctl + c / ctl + v)

  1. Clique em Aplicar -> OK

Esta solução foi encontrada aqui .


0

Quando esse bug aparecer com novas versões do ADT (que são obrigatórias para correção e onde o bug não deve aparecer com frequência), use a ferramenta Lint para corrigi-lo.

Encontre-o em avisos de fiapos e clique em lâmpada amarela no ícone de no canto superior direito da lista de avisos de Lint.

Espero que ajude alguém

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.