Android: impossibile convertire @ drawable / picture in un drawable


112

Nella mia cartella disegnabile ho alcune immagini e tutte si riferiscono perfettamente, ma quando provo ad aggiungere altre immagini con la stessa identica dimensione nella stessa cartella e provo a fare riferimento ad essa, viene visualizzato un errore "Impossibile convertire @ disegnabile / immagine in un disegnabile " . Ho provato la stessa immagine con un nome diverso e continua a darmi quell'errore. L'ho provato anche in un layout XML diverso e la stessa cosa. Anche il nome dell'immagine è stato "jack", "abc", "question_mark" come puoi vedere ci sono rigorosamente nelle regole dei caratteri che puoi usare, e ancora il messaggio di errore continua ad apparire. Qualche consiglio sarebbe ottimo su come risolvere il problema, grazie.

Impossibile convertire @ drawable / picture in un drawable


2
Tutto risolto per qualche strano motivo, all'improvviso dopo qualche altro clic funziona! il mio consiglio se si verifica questo problema è solo di riavviare eclipse e assicurarsi che ogni cosa sia referenziata e denominata correttamente.
Jack Trowbridge

2
A volte la semplice ricostruzione del progetto da zero aiuta a sbarazzarsi di questi problemi di Android SDK. Ho visto casi strani in cui utilizzava immagini sbagliate per tutti i miei drawable (nessun errore, ma usando l'immagine accanto a quella corretta per ogni drawable) probabilmente un problema con l'ID di riferimento.
Guillaume

di nuovo -1 Android, +1 Windows
mihai71

4
Per me era il carattere "-" nel mezzo del nome del file. Dopo aver rinominato tutto è andato bene in Android Studio.
martin.p

Risposte:


200

Riavvia Eclipse (sfortunatamente) e il problema scomparirà.


Chiudere e riaprire il progetto in Eclipse ha funzionato per me. Grazie Aliyah!
stephen.hanson

Ho avuto questo problema con drawable-normal-hdpi, ma quando ho le mie immagini in drawable-hdpi - tutto è OK.
Yar

@DoctororDrive - forse il tuo problema era leggermente diverso. hai ancora l'errore?
Androliyah

4
abbastanza divertente che questo problema esista sia in Eclipse che in Android Studio
Mohammad AbuShady,

3
il progetto di chiusura / riapertura non ha funzionato per me, ma l'uscita / il riavvio di Android Studio ha funzionato. grazie Aliyah.
tmr

143

Controlla anche se il nome della risorsa contiene caratteri illegali (per me era un "-" nella mia immagine)


Il pacchetto di icone di Android contiene nomi di file come 10-device-access-alarms.png, che Eclipse soffoca! Grazie.
Noumenon

12
Anche lo studio Android soffoca con quei nomi di file. La ridenominazione in trattini bassi ha risolto il problema per me.
Cypress Frankenfeld

Per me è stato il carattere spaziale ""!
Efreeto

lo spazio è stato il colpevole nel mio caso
Saju

era "-" anche per me, stranamente lo studio Android non ha contrassegnato in rosso questa cosa ...
Haseeb Zulfiqar

55

Se il riavvio di Eclipse non risolve il problema, assicurarsi che il nome dell'immagine inizi con un carattere alfabetico (non numerico).


4
Grazie. Android crea la variabile id drawable nel file R con il nome drawable. Ad esempio, se il file inizia con un numero, la variabile inizierà con un numero e ciò non è consentito nel linguaggio Java.
momo

9
Assicurati inoltre che non contenga trattini (-); ad es. "mic-back" non è valido, "mic_back" va bene
Markus

Questo era il mio problema. Tutte le icone nel pacchetto sul sito Web di Android hanno numeri iniziali.
theblang

Deve essere un png? Sto cercando di usare jpg.
IgorGanapolsky

28

file namedeve contenere solo abc...xyz 012...789 _ . nella cartella Risorse.

per es:

my-image.png èFalse !
MyImage.png èFalse !
my image.png èFalse !
...
...

my-xml.xml èFalse !
MyXml.xml èFalse !
il mio xml.xml èFalse !
...
...


25

Questo perché il nome dell'immagine contiene il simbolo "-". gli unici caratteri consentiti sono [a-zA-Z0-9_.]

Grazie


1
Le lettere maiuscole non sono valide. Se li utilizzi, Android Studio restituirà questo errore: Errore: esecuzione non riuscita per l'attività ": app: mergeDebugResources". > Errore: nome file non valido: deve contenere solo lettere minuscole e cifre ([a-z0-9_.])
LightMan

5

Ho lo stesso problema su Android Studio. Non è necessario riavviare l'IDE, basta chiudere e riaprire il progetto e questo risolverà il problema. (Assicurati che src sia un input corretto).


Anche la ricostruzione del progetto lo farà.
Mike

Ho fatto File -> Invalidate Caches / Restart ..., che ha funzionato (ed è probabilmente eccessivo).
SMBiggs

3

In Android Studio il nome del file delle risorse (immagini) non può iniziare con NUMERICe non può contenere alcun BIGcarattere. Per risolvere il tuo problema, fai come ha detto Aliyah. Riavvia semplicemente il tuo IDE. Questo ha risolto anche il mio problema.


2

Semplifica il nome del tuo file, sembra che qualsiasi carattere speciale nel nome del file lo faccia singhiozzare. per esempio chaange "my-main-header.png" a "header1.png" non sono sicuro del perché, ma funziona


2
Questo perché i nomi dei file di risorse vengono convertiti in identificatori di risorse in R.javae -non sono un carattere valido per gli identificatori.
laalto

2

Per Android Studio ho avuto lo stesso problema. È stato causato dall'esecuzione da Linux, il che significa che i file non hanno ricevuto automaticamente un'estensione. Aggiungendo manualmente .png alla fine dei nomi dei file, potrebbe riconoscere il tipo di file e caricarsi di conseguenza.

Studio Android potrebbe lanciare un sibilo se provi a effettuare il refactoring della ridenominazione all'interno del progetto, perché Android proverà a rigenerare R immediatamente. Non so esattamente cosa causa l'errore in quanto punta a una riga di codice apparentemente casuale, che nel mio caso era un commento.

Soluzione a questo: Elimina da Drawable, rinomina al di fuori del progetto e inseriscili di nuovo.


1

Può essere ancora più banale di quanto suggerito dagli altri poster: se hai più progetti assicurati di non aver creato il file di layout xml nel progetto sbagliato.

Dopo la creazione, il file si aprirà automaticamente, quindi potrebbe passare inosservato e si presume che sia nel progetto corretto. Ovviamente ogni riferimento a drawables o altre risorse non sarà valido.

E sì, sono così stupido. D'ora in poi chiuderò tutti i progetti inutilizzati :)


1

Penso di aver trovato un modo per farlo funzionare senza riavviare Eclipse o senza chiudere il progetto (ha funzionato per me):

  • rinomina il nome del file immagine sotto res / in Eclipse -> scegli il file e premi F2 (per me è res / drawable-mdpi / bush-landscape.jpg -> cambiato in bush.jpg)

  • Crea progetto (mostrerà ancora un errore)

  • cambia immagine dove l'hai usata (ho cambiato in Layout grafico. Per me il luogo era LinearLayout / Background / bush-landscape -> ho cambiato "bush-landscape" in "bush")

  • Costruisci progetto


1

Il nome della mia immagine era 21.jpg. L'ho rinominato come abc.jpg e ha funzionato. Quindi assicurati che il nome della tua immagine non inizi con un numero. Tuttavia tutte le risposte di cui sopra sono anche accettate.


1

Se hai le convenzioni di denominazione corrette, vai su File -> Invalidate Caches / Restart ..

E premi Invalidate Caches / Restart ..

Questo ha aiutato nel mio caso.


0

Nel mio caso avevo un'immagine in cartelle diverse (con lo stesso nome) per supportare diversi dpi e dimensioni del dispositivo. Tutte le immagini avevano lo stesso nome tranne una di esse. Era digitato in modo errato e una volta che l'ho rinominato come altri nomi, ha risolto il mio problema.

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.