Ich möchte auf eine Ressource wie einen String oder ein Drawable anhand ihres Namens und nicht anhand ihrer int-ID zugreifen.
Welche Methode würde ich dafür verwenden?
java
android
android-resources
Assuan
quelle
quelle
Antworten:
Es wird so etwas sein wie:
R.drawable.resourcename
Stellen Sie sicher, dass Sie den
Android.R
Namespace nicht importiert haben, da dies Eclipse verwirren kann (wenn Sie dies verwenden).Wenn das nicht funktioniert, können Sie immer die
getResources
Methode eines Kontexts verwenden ...Wo
this.context
wird als ein intialisedActivity
,Service
oder jede andereContext
Unterklasse.Aktualisieren:
Wenn es der gewünschte Name ist, hat die
Resources
Klasse (zurückgegeben vongetResources()
) einegetResourceName(int)
Methode und eingetResourceTypeName(int)
?Update 2 :
Die
Resources
Klasse hat diese Methode:Dies gibt die Ganzzahl des angegebenen Ressourcennamens, Typs und Pakets zurück.
quelle
R.drawable.resourcename
ist die ganze Zahl.Wenn ich richtig verstanden habe, ist es das, was Sie wollen
Wo "dies" eine Aktivität ist, die nur zur Verdeutlichung geschrieben wurde.
Wenn Sie einen String in der Datei strings.xml oder einen Bezeichner eines UI-Elements möchten, ersetzen Sie "drawable".
Ich warne Sie, diese Art, Identifikatoren zu erhalten, ist sehr langsam. Verwenden Sie sie nur dort, wo sie benötigt werden.
Link zur offiziellen Dokumentation: Resources.getIdentifier (String name, String defType, String defPackage)
quelle
quelle
•
Kotlin Version
überExtension Function
So finden Sie eine Ressourcen-ID anhand ihres Namens: Fügen Sie in Kotlin das folgende Snippet in eine Kotlin-Datei ein:
ExtensionFunctions.kt
• •
Usage
Jetzt sind alle Ressourcen-IDs überall dort verfügbar, wo Sie eine Kontextreferenz haben. Verwenden Sie dazu die folgende
resIdByName
Methode:quelle
Eine einfache Möglichkeit, die Ressourcen-ID aus einer Zeichenfolge abzurufen. Hier ist resourceName der Name der Ressource ImageView im zeichnbaren Ordner, der auch in der XML-Datei enthalten ist.
quelle
Ich würde vorschlagen, dass Sie meine Methode verwenden, um eine Ressourcen-ID zu erhalten. Es ist viel effizienter als die langsame Methode getIdentidier ().
Hier ist der Code:
quelle
quelle
Ich fand diese Klasse sehr hilfreich im Umgang mit Ressourcen. Es gibt einige definierte Methoden, um mit Dimensionen, Farben, Zeichen und Zeichenfolgen umzugehen, wie diese:
quelle
zusätzlich zu @lonkly Lösung
Methode:
quelle
In Kotlin funktioniert folgendes gut für mich:
Wenn sich die Ressource im Ordner mipmap befindet, können Sie den Parameter "mipmap" anstelle von "drawable" verwenden.
quelle