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

Jack Trowbridge
fonte
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.

Androliyah
fonte
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)

perumer
fonte
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).

GregM
fonte
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 !
...
...

Mahdi-bagvand
fonte
25

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

obrigado

Kiba
fonte
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).

Yen NQ
fonte
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.

Sabri Meviş
fonte
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

Raymond
fonte
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.

G_V
fonte
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 :)

user1883611
fonte
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

Alex
fonte
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.

Abhishek Kaushik
fonte
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.

Amit Upadhyay
fonte
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.

Hamid
fonte