Android: nie udało się przekonwertować @ drawable / picture na plik do rysowania

112

W moim folderze do rysowania mam kilka obrazów i wszystkie odnoszą się idealnie, ale kiedy próbuję dodać więcej obrazów o dokładnie tym samym rozmiarze w tym samym folderze i próbuję odwołać się do niego, pojawia się błąd „Nie udało się przekonwertować @ drawable / picture in a drawable ” . Wypróbowałem ten sam obraz pod inną nazwą i po prostu wyświetla mi ten błąd. Próbowałem też w innym układzie XML i to samo. Również nazwa obrazka to "jack", "abc", "question_mark", jak widać, są ściśle określone zasady jakich znaków możesz używać, a mimo to komunikat o błędzie ciągle się pojawia. Każda rada byłaby świetna, jak rozwiązać problem, dzięki.

Nie udało się przekształcić @ drawable / picture w plik do rysowania

Jack Trowbridge
źródło
2
Wszystko posortowane z jakiegoś dziwnego powodu, nagle po kilku kolejnych kliknięciach działa! Moja rada, jeśli napotkasz ten problem, polega na ponownym uruchomieniu zaćmienia i upewnieniu się, że każda rzecz jest poprawnie wymieniona i nazwana.
Jack Trowbridge
2
Czasami wystarczy odbudować projekt od podstaw, aby pozbyć się tych problemów z Android SDK. Widziałem dziwne przypadki, w których używał niewłaściwych obrazów dla wszystkich moich rysunków (bez błędu, ale użycie obrazu obok właściwego dla każdego elementu do rysowania) prawdopodobnie był problemem z identyfikatorem odniesienia.
Guillaume,
ponownie -1 Android, +1 Windows
mihai71
4
Dla mnie był to znak „-” w środku nazwy pliku. Po zmianie nazwy wszystko poszło dobrze w Android Studio.
martin.p

Odpowiedzi:

200

Uruchom ponownie Eclipse (niestety), a problem zniknie.

Androliyah
źródło
Zamykanie i ponowne otwieranie projektu w Eclipse działało dla mnie. Dzięki Aliyah!
stephen.hanson
Ia miał ten problem z drawable-normal-hdpi, ale kiedy mam obrazy w drawable-hdpi - wszystko jest w porządku.
Yar,
@DoctororDrive - być może Twój problem był nieco inny. czy nadal masz błąd?
Androliyah
4
dość zabawne, że ten problem występuje zarówno w studio zaćmienia, jak i na
Androidzie
3
projekt zamknięcia / ponownego otwarcia nie zadziałał, ale zamknięcie / ponowne uruchomienie studia Android działało. dziękuję Aliyah.
tmr
143

Sprawdź również, czy nazwa zasobu zawiera niedozwolone znaki (dla mnie był to „-” w moim obrazie)

perumer
źródło
Własny pakiet ikon Androida zawiera nazwy plików, takie jak 10-device-access-alarms.png, którymi dusi Eclipse! Dzięki.
Noumenon
12
Studio Android również dławi się tymi nazwami plików. Zmiana nazwy na podkreślenia naprawiła to za mnie.
Cypress Frankenfeld
Dla mnie był to znak spacji „”!
Efreeto
kosmos był winowajcą w moim przypadku
Saju
dla mnie też było "-", dziwnie android studio nie zaznaczyło tego na czerwono ...
Haseeb Zulfiqar
55

Jeśli ponowne uruchomienie Eclipse nie rozwiąże problemu, upewnij się, że nazwa obrazu zaczyna się od znaku alfabetu (nienumerycznego).

GregM
źródło
4
Dzięki. Android tworzy rysowalną zmienną id w pliku R z nazwą do rysowania. Na przykład, jeśli plik zaczyna się od liczby, zmienna zaczyna się od liczby, co nie jest dozwolone w języku Java.
momo
9
Upewnij się również, że nie zawiera myślników (-); np. „mic-back” jest nieprawidłowy, „mic_back” jest w porządku
Markus
To był mój problem. Wszystkie ikony w pakiecie na stronie Androida mają wiodące liczby.
theblang
Czy to musi być plik png? Próbuję używać plików jpg.
IgorGanapolsky
28

file namemusi zawierać tylko abc...xyz 012...789 _ . w folderze Resources.

na przykład:

my-image.png jestFalse !
MyImage.png jestFalse !
my image.png jestFalse !
...
...

my-xml.xml jestFalse !
MyXml.xml jestFalse !
mój xml.xml toFalse !
...
...

Mahdi-bagvand
źródło
25

Dzieje się tak, ponieważ nazwa obrazu zawiera symbol „-”. jedyne dozwolone znaki to [a-zA-Z0-9_.]

Dzięki

Kiba
źródło
1
Wielkie litery są nieprawidłowe. Jeśli ich użyjesz, Android Studio wyświetli ten błąd: Błąd: nie powiodło się wykonanie zadania „: app: mergeDebugResources”. > Błąd: nieprawidłowa nazwa pliku: musi zawierać tylko małe litery i cyfry ([a-z0-9_.])
LightMan
5

Mam ten sam problem na Android Studio. Nie ma potrzeby ponownego uruchamiania IDE, po prostu zamknij i ponownie otwórz projekt, a to rozwiąże problem. (Upewnij się, że src są poprawnymi danymi wejściowymi).

Yen NQ
źródło
Przebudowa projektu również to zrobi.
Mike
Zrobiłem Plik -> Unieważnij pamięć podręczną / Uruchom ponownie ..., który również działał (i prawdopodobnie jest przesadą).
SMBiggs
3

W Android Studio nazwa pliku zasobów (obrazów) nie może zaczynać się od NUMERICi nie może zawierać żadnego BIGznaku. Aby rozwiązać swój problem, zrób tak, jak powiedział Aliyah. Po prostu uruchom ponownie IDE. To również rozwiązało mój problem.

Sabri Meviş
źródło
2

Uprość nazwę pliku, wydaje się, że wszelkie znaki specjalne w nazwie pliku powodują, że czkawka. na przykład chaange „my-main-header.png” na „header1.png” nie wiem dlaczego, ale to działa

Raymond
źródło
2
Dzieje się tak, ponieważ nazwy plików zasobów są konwertowane na identyfikatory zasobów w programie R.javai -nie są prawidłowym znakiem dla identyfikatorów.
laalto
2

W przypadku Android Studio miałem ten sam problem. Było to spowodowane uruchomieniem z systemu Linux, co oznacza, że ​​pliki nie otrzymały automatycznie rozszerzenia. Dodając ręcznie .png na końcu nazw plików, może rozpoznać typ pliku i odpowiednio załadować.

Studio Android może się nieźle skończyć, jeśli spróbujesz zmienić nazwę wewnątrz projektu, ponieważ Android spróbuje natychmiast zregenerować R. Nie wiem dokładnie, co powoduje błąd, ponieważ wskazuje na jakiś pozornie losowy wiersz kodu, który w moim przypadku był komentarzem.

Rozwiązanie: Usuń z rysunków, zmień nazwę poza projektem i wrzuć je ponownie.

G_V
źródło
1

Może to być nawet bardziej trywialne niż to, co sugerowały inne plakaty: jeśli masz wiele projektów, upewnij się, że nie utworzyłeś pliku układu XML w niewłaściwym projekcie.

Po utworzeniu plik otworzy się automatycznie, więc może to pozostać niezauważone i można założyć, że znajduje się we właściwym projekcie. Oczywiście wszelkie odniesienia do przedmiotów rysunkowych lub innych zasobów będą nieważne.

I tak, jestem taki głupi. Od teraz zamknę wszystkie nieużywane projekty :)

user1883611
źródło
1

Myślę, że znalazłem sposób, aby to działało bez ponownego uruchamiania Eclipse lub bez zamykania projektu (u mnie zadziałało):

  • zmień nazwę pliku obrazu na res / w Eclipse -> wybierz plik i naciśnij F2 (dla mnie to res / drawable-mdpi / bush-landscape.jpg -> zmieniono na bush.jpg)

  • Kompiluj projekt (nadal będzie wyświetlał błąd)

  • zmień obraz, na którym go użyłeś (zmieniłem w układzie graficznym. Dla mnie miejsce to LinearLayout / Background / bush-landscape -> zmieniono „bush-landscape” na „bush”)

  • Zbuduj projekt

Alex
źródło
1

Nazwa mojego obrazu to 21.jpg. Zmieniłem nazwę na abc.jpg i zadziałało. Dlatego upewnij się, że nazwa obrazu nie zaczyna się od numeru. Jednak wszystkie powyższe odpowiedzi są również akceptowane.

Abhishek Kaushik
źródło
1

Jeśli masz odpowiednie konwencje nazewnictwa, po prostu przejdź do Plik -> Unieważnij pamięć podręczną / Uruchom ponownie.

I naciśnij Unieważnij pamięci podręczne / Uruchom ponownie.

To pomogło w moim przypadku.

Amit Upadhyay
źródło
0

W moim przypadku miałem obraz w różnych folderach (o tej samej nazwie) do obsługi różnych dpi i rozmiarów urządzeń. Wszystkie obrazy miały tę samą nazwę z wyjątkiem jednego z nich. Został błędnie wpisany i kiedy zmieniłem jego nazwę na inne nazwy, rozwiązało to mój problem.

Hamid
źródło