Heim >Java >javaLernprogramm >Wie kann ich Android-Ressourcen-IDs und die entsprechenden Zeichenfolgen effizient abrufen?
Wie erhalte ich eine Ressourcen-ID und eine Zeichenfolge aus einer Android-Ressourcendatei?
In der Android-Entwicklung ist es notwendig, eine Ressourcen-ID an Methoden zu übergeben innerhalb der Klassen. Normalerweise benötigen Entwickler sowohl die ID als auch die entsprechende Zeichenfolge, die dieser Ressource zugeordnet ist. Ein häufiges Beispiel für diese Situation ergibt sich bei der Arbeit mit Bild-Drawables.
Bedenken Sie die Ressourcen-ID R.drawable.icon, die das Symbolbild darstellt. Um sowohl die ID als auch die Zeichenfolge „Symbol“ zu verwenden, können verschiedene Ansätze untersucht werden:
Eine Lösung besteht darin, die Methode Resources.getIdentifier() zu verwenden:
int resId = getResources().getIdentifier("icon", "drawable", packageName);
Hier getResources() bezieht sich auf das Kontextobjekt, packageName ist der Paketname der Anwendung und „icon“ stellt die Zeichenfolgenkennung dar. Diese Methode kann jedoch relativ langsam sein, insbesondere in Release-Builds mit aktivierter Code-/Ressourcenverkleinerung.
Ein alternativer Ansatz besteht darin, Reflektion zu verwenden, um auf das gewünschte Ressourcenfeld zuzugreifen:
Class resClass = R.drawable.class; Field field = resClass.getDeclaredField("icon"); int id = field.getInt(null);
Dies Die Methode greift direkt auf das Ressourcenfeld zu und bietet eine schnellere Leistung als der vorherige Ansatz. Es kann jedoch zu Problemen kommen, wenn die Ressourcen schrumpfen oder wenn sich Ressourcennamen von Zeichenfolgenbezeichnern unterscheiden.
Zusätzliche Überlegungen:
Bei der Verwendung von Reflektion ist Folgendes unbedingt zu beachten Diese Code-/Ressourcenverkleinerung kann dazu führen, dass der Ansatz in Release-Builds unwirksam wird. Darüber hinaus verfügen einige Ressourcen, z. B. mit
Das obige ist der detaillierte Inhalt vonWie kann ich Android-Ressourcen-IDs und die entsprechenden Zeichenfolgen effizient abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!