Android: falha ao converter @ drawable / picture em drawable


112

Na minha pasta de desenho, tenho algumas imagens e todas apresentam referências perfeitas, mas quando tento adicionar mais imagens com exatamente o mesmo tamanho na mesma pasta e tento fazer referência a elas, é sinalizado um erro "Falha ao converter @ drawable / picture em drawable " . Eu tentei a mesma imagem com um nome diferente e continua me dando esse erro. Eu também tentei em um layout XML diferente e a mesma coisa. Além disso, o nome da imagem foi "jack", "abc", "question_mark", como você pode ver, há estritamente nas regras de quais caracteres você pode usar, e ainda assim a mensagem de erro continua aparecendo. Qualquer conselho seria ótimo sobre como resolver o problema, obrigado.

Falha ao converter @ drawable / picture em drawable


2
Tudo organizado por algum motivo estranho, de repente, depois de mais alguns cliques, ele funciona! meu conselho se você tiver esse problema é apenas reiniciar o eclipse e certificar-se de que tudo está referenciado e nomeado corretamente.
— Jack Trowbridge de

2
Às vezes, apenas reconstruir o projeto do zero ajuda a se livrar desses problemas do Android SDK. Eu vi casos estranhos onde ele usou imagens erradas para todos os meus drawables (nenhum erro, mas usando a imagem ao lado da correta para cada drawable) provavelmente um problema de id de referência.
— Guillaume

novamente -1 Android, +1 Windows
— mihai71

4
Para mim, era o char "-" no meio do nome do arquivo. Depois de renomear, tudo correu bem no Android Studio.
— martin.p

Respostas:


200

Reinicie o Eclipse (infelizmente) e o problema irá embora.


Fechar e reabrir o projeto no Eclipse funcionou para mim. Obrigado Aliyah!
— stephen.hanson

Ia teve esse problema com drawable-normal-hdpi, mas ao ter minhas imagens em drawable-hdpi - tudo está OK.
— Ano de

@DoctororDrive - talvez seu problema seja um pouco diferente. você ainda tem o erro?
— Androliyah

4
muito engraçado que esse problema exista tanto no eclipse quanto no Android Studio
— Mohammad AbuShady

3
fechar / reabrir o projeto não funcionou para mim, mas sair / reiniciar o Android Studio funcionou. obrigado Aliyah.
— tmr

143

Verifique também se o nome do recurso contém algum caractere ilegal (para mim era um "-" na minha imagem)


O pacote de ícones do Android contém nomes de arquivos como 10-device-access-alarms.png, que o Eclipse engasga! Obrigado.
— Noumenon

12
O Android Studio também bloqueia esses nomes de arquivo. Renomear para sublinhados consertou isso para mim.
— Cypress Frankenfeld

Para mim foi o personagem espacial ""!
— Efreeto

o espaço foi o culpado no meu caso
— Saju

era "-" para mim também, estranhamente o Android Studio não marcou essa coisa em vermelho ...
— Haseeb Zulfiqar

55

Se reiniciar o Eclipse não corrigir o problema, certifique-se de que o nome da imagem comece com um caractere alfa (não numérico).


4
Obrigado. O Android cria a variável id do drawable no arquivo R com o nome do drawable. Por exemplo, se o arquivo começa com um número, a variável começará com um número e isso não é permitido na linguagem Java.
— momo

9
Certifique-se também de que não contém travessões (-); por exemplo, 'mic-back' é inválido, 'mic_back' está ok
— Markus

Esse era o meu problema. Todos os ícones do pacote no site do Android têm números importantes.
— theblang

Tem que ser um PNG? Estou tentando usar jpg.
— IgorGanapolsky

28

file namedeve conter apenas abc...xyz 012...789 _ . na pasta Recursos.

por ex:

my-image.png éFalse !
MyImage.png éFalse !
meu image.png éFalse !
...
...

my-xml.xml éFalse !
MyXml.xml éFalse !
meu xml.xml éFalse !
...
...


25

Isso ocorre porque o nome da imagem contém o símbolo "-". os únicos caracteres permitidos são [a-zA-Z0-9_.]

obrigado


1
Letras maiúsculas não são válidas. Se você usá-los, o Android Studio apresentará este erro: Erro: Falha na execução da tarefa ': app: mergeDebugResources'. > Erro: Nome de arquivo inválido: deve conter apenas letras minúsculas e dígitos ([a-z0-9_.])
— LightMan de

5

Tenho o mesmo problema no Android Studio. Não há necessidade de reiniciar o IDE, basta fechar e reabrir o projeto e isso resolverá o problema. (Certifique-se de que o src é uma entrada correta).


Reconstruir o projeto também o fará.
— Mike

Eu fiz Arquivo -> Invalidar Caches / Reiniciar ..., que funcionou bem (e provavelmente é um exagero).
— SMBiggs

3

No Android Studio, o nome do arquivo de recurso (imagens) não pode começar com NUMERICe não pode conter nenhum BIGcaractere. Para resolver seu problema, faça o que Aliyah disse. Apenas reinicie seu IDE. Isso também resolveu meu problema.


2

Simplifique o nome do seu arquivo, parece que qualquer caractere especial no nome do arquivo causa soluços. por exemplo chaange "my-main-header.png" para "header1.png" não tenho certeza por que, mas funciona


2
Isso ocorre porque os nomes dos arquivos de recursos são convertidos em identificadores de recursos R.javae -não são caracteres válidos para identificadores.
— laalto

2

Para o Android Studio, tive o mesmo problema. Foi causado pela execução do Linux, o que significa que os arquivos não receberam automaticamente uma extensão. Ao adicionar manualmente .png ao final dos nomes de arquivo, ele poderia reconhecer o tipo de arquivo e carregar de acordo.

O Android Studio pode ter um ataque sibilante se você tentar refatorar a renomeação dentro do projeto, porque o Android tentará regenerar R imediatamente. Não sei exatamente o que causa o erro, pois ele aponta para alguma linha de código aparentemente aleatória, que no meu caso era um comentário.

Solução para isso: Exclua do drawable, renomeie fora do projeto e jogue-os novamente.


1

Pode ser ainda mais trivial do que o que os outros participantes sugeriram: se você tiver vários projetos, certifique-se de não ter criado o arquivo de layout xml no projeto errado.

Após a criação, o arquivo será aberto automaticamente, então isso pode passar despercebido e você assume que está no projeto correto. Obviamente, quaisquer referências a drawables ou outros recursos serão inválidas.

E sim, eu sou tão estúpido. Vou fechar todos os projetos não utilizados de agora em diante :)


1

Acho que encontrei uma maneira de fazer isso funcionar sem reiniciar o Eclipse ou sem fechar o projeto (funcionou para mim):

  • renomear o nome do arquivo de imagem em res / no Eclipse -> escolha o arquivo e pressione F2 (para mim, res / drawable-mdpi / bush-landscape.jpg -> alterado para bush.jpg)

  • Construir projeto (ainda mostrará erro)

  • mude a imagem onde você a usou (eu mudei no Layout gráfico. Para mim, o lugar era LinearLayout / Background / bush-landscape -> alterei "bush-landscape" para "bush")

  • Construir Projeto


1

Meu nome de imagem era 21.jpg. Eu o renomei como abc.jpg e funcionou. Portanto, certifique-se de que o nome da imagem não comece com um número. No entanto, todas as respostas acima também são aceitas.


1

Se você tiver as convenções de nomenclatura corretas, vá para Arquivo -> Invalidar Caches / Reiniciar ..

E pressione Invalidar Caches / Reiniciar ..

Isso ajudou no meu caso.


0

No meu caso, eu tinha uma imagem em pastas diferentes (com o mesmo nome) para suportar diferentes dpi e tamanhos de dispositivo. Todas as imagens tinham o mesmo nome, exceto uma delas. Ele foi digitado incorretamente e, depois que o renomei como outros nomes, ele resolveu meu problema.

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.