Chcę uzyskać dostęp do zasobu, takiego jak String lub Drawable, według jego nazwy, a nie identyfikatora int.
Której metody użyłbym do tego?
java
android
android-resources
Asuan
źródło
źródło
Odpowiedzi:
Będzie to coś takiego:
R.drawable.resourcename
Upewnij się, że nie masz
Android.R
zaimportowanej przestrzeni nazw, ponieważ może to zmylić Eclipse (jeśli tego właśnie używasz).Jeśli to nie zadziała, zawsze możesz użyć
getResources
metody kontekstu ...Gdzie
this.context
jest intialised jakoActivity
,Service
lub jakiekolwiek inneContext
podklasy.Aktualizacja:
Jeśli jest to żądana nazwa,
Resources
klasa (zwracana przezgetResources()
) magetResourceName(int)
metodę i znakgetResourceTypeName(int)
?Aktualizacja 2 :
Resources
Klasa ma tę metodę:Która zwraca liczbę całkowitą określonej nazwy zasobu, wpisz & pakiet.
źródło
R.drawable.resourcename
jest liczbą całkowitą.Jeśli dobrze zrozumiałem, tego właśnie chcesz
Gdzie „to” jest działaniem, napisanym tylko w celu wyjaśnienia.
Jeśli chcesz mieć ciąg w strings.xml lub identyfikator elementu UI, zastąp „drawable”
Ostrzegam, ten sposób uzyskiwania identyfikatorów jest naprawdę powolny, używaj tylko w razie potrzeby.
Link do oficjalnej dokumentacji: Resources.getIdentifier (String name, String defType, String defPackage)
źródło
źródło
•
Kotlin Version
przezExtension Function
Aby znaleźć identyfikator zasobu według jego nazwy W Kotlin, dodaj poniższy fragment kodu w pliku kotlin:
ExtensionFunctions.kt
•
Usage
Teraz wszystkie identyfikatory zasobów są dostępne wszędzie tam, gdzie masz odwołanie do kontekstu przy użyciu
resIdByName
metody:źródło
Prosty sposób na uzyskanie identyfikatora zasobu z ciągu. Tutaj nazwa_zasobu jest nazwą zasobu ImageView w folderze do rysowania, który jest również zawarty w pliku XML.
źródło
Sugerowałbym użycie mojej metody, aby uzyskać identyfikator zasobu. Jest to o wiele bardziej wydajne niż użycie metody getIdentidier (), która jest wolna.
Oto kod:
źródło
źródło
Uważam, że ta klasa jest bardzo pomocna w zarządzaniu zasobami. Ma kilka zdefiniowanych metod radzenia sobie z wymiarami, kolorami, rysunkami i ciągami, takimi jak ten:
źródło
oprócz rozwiązania @lonkly
metoda:
źródło
W Kotlinie działa dla mnie dobrze:
Jeśli zasób jest umieszczony w folderze mipmap, możesz użyć parametru „mipmap” zamiast „drawable”.
źródło