Heim >Java >javaLernprogramm >Wie kann ich Android-Ressourcen-IDs und String-Referenzen effizient aus einem String abrufen?
Ressourcen-ID und String-Referenz aus einem String abrufen
Viele Android-Entwicklungsszenarien erfordern die Übergabe sowohl der Ressourcen-ID als auch der entsprechenden Zeichenfolge an Methoden. Beispielsweise stoßen Sie möglicherweise auf eine Referenz wie R.drawable.icon und benötigen sowohl deren ganzzahlige ID als auch die Zeichenfolge „icon“.
Lösung 1: Verwenden von Resources.getIdentifier()
Android Studio bietet eine effiziente Methode namens Resources.getIdentifier(). Diese Funktion verwendet die Zeichenfolge, den Paketnamen und den Ressourcentyp als Parameter und gibt die entsprechende Ressourcen-ID zurück. Der Paketname kann mit getPackageName() abgerufen werden. Für das betreffende Beispiel wäre der Code:
int resId = getResources().getIdentifier("icon", "drawable", getPackageName()); String resString = "icon";
Lösung 2: Verwendung von Reflection
Vor der Einführung von Resources.getIdentifier(), Reflection durch Android Studio wurde häufig verwendet, um diese Funktionalität zu erreichen. Der folgende Code demonstriert diesen Ansatz:
public static int getResId(String resName, Class<?> c) { try { Field idField = c.getDeclaredField(resName); return idField.getInt(idField); } catch (Exception e) { e.printStackTrace(); return -1; } }
Er kann wie folgt verwendet werden:
int resId = getResId("icon", R.drawable.class); String resString = "icon";
Leistungsüberlegungen
Laut einigen Quellen , Resources.getIdentifier() ist schneller als der reflexionsbasierte Ansatz. Es ist jedoch wichtig zu beachten, dass die Reflexionsmethode in bestimmten Android-Build-Szenarien fehlschlagen kann, insbesondere wenn Code- und Ressourcenverkleinerung aktiviert sind.
Das obige ist der detaillierte Inhalt vonWie kann ich Android-Ressourcen-IDs und String-Referenzen effizient aus einem String abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!