Heim > Java > javaLernprogramm > Wie erhalte ich effizient eine Android-Ressourcen-ID aus ihrem String-Namen?

Wie erhalte ich effizient eine Android-Ressourcen-ID aus ihrem String-Namen?

DDD
Freigeben: 2024-12-20 09:31:09
Original
561 Leute haben es durchsucht

How to Efficiently Get an Android Resource ID from its String Name?

Ressourcen-ID aus String in Android abrufen

Bei der Übergabe einer Ressourcen-ID an eine Methode ist es oft wünschenswert, sowohl auf die ID als auch auf die entsprechende Zeichenfolge zuzugreifen. Betrachten Sie beispielsweise die Ressource „icon“:

R.drawable.icon
Nach dem Login kopieren

Um sowohl die ID als auch die Zeichenfolge „icon“ zu erhalten, können mehrere Ansätze untersucht werden:

Eine Lösung besteht darin, die Ressourcen zu nutzen. getIdentifier()-Methode:

int resID = getResources().getIdentifier("icon", "drawable", getPackageName());
String iconString = "icon";
Nach dem Login kopieren

Jüngste Untersuchungen haben jedoch gezeigt, dass Resources.getIdentifier() weniger effizient sein kann als die Verwendung Reflexion.

Alternativ können Sie den folgenden reflexionsbasierten Code verwenden:

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;
    } 
}
Nach dem Login kopieren

Um diese Methode für die Ressource „Symbol“ zu verwenden:

int resID = getResId("icon", R.drawable.class); // or other resource class
String iconString = "icon";
Nach dem Login kopieren

Obwohl Dieser Reflexionsansatz ist möglicherweise effizienter, es ist jedoch wichtig, mögliche Nachteile zu beachten. In einem Release-Build mit aktivierter Code-/Ressourcenverkleinerung schlägt diese Lösung möglicherweise fehl. Darüber hinaus funktioniert es möglicherweise nicht, wenn der Zeichenfolgenname vom erwarteten Ressourcennamenformat abweicht.

Das obige ist der detaillierte Inhalt vonWie erhalte ich effizient eine Android-Ressourcen-ID aus ihrem String-Namen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage