Heim >Java >javaLernprogramm >Wie kann ich Android-Ressourcen-IDs und String-Referenzen effizient aus einem String abrufen?

Wie kann ich Android-Ressourcen-IDs und String-Referenzen effizient aus einem String abrufen?

DDD
DDDOriginal
2024-12-20 12:56:14992Durchsuche

How to Efficiently Retrieve Android Resource IDs and String References from a String?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn