Heim >Java >javaLernprogramm >Wie kann ich Ressourcen-IDs und Zeichenfolgenwerte in Android effizient abrufen?

Wie kann ich Ressourcen-IDs und Zeichenfolgenwerte in Android effizient abrufen?

Linda Hamilton
Linda HamiltonOriginal
2024-12-19 03:38:09685Durchsuche

How to Efficiently Retrieve Resource IDs and String Values in Android?

Recovering Resource ID and String in Android

In der Android-Entwicklung kann es sein, sowohl die Ressourcen-ID als auch den mit einer Ressource verknüpften String-Wert abzurufen eine allgemeine Anforderung. Betrachten Sie das folgende Beispiel:

R.drawable.icon

Diese Referenz bezeichnet eine zeichnbare Ressource mit dem Namen „icon“. Um sowohl die ID als auch die Zeichenfolgendarstellung an eine Methode zu übergeben, haben Sie mehrere Möglichkeiten.

Verwendung von Resources.getIdentifier()

Die Methode Resources.getIdentifier() ermöglicht dies um die Ressourcen-ID für eine bestimmte Zeichenfolge zu erhalten. Übergeben Sie die Zeichenfolge, den gewünschten Ressourcentyp (z. B. Drawable) und den Paketnamen als Parameter.

int resId = getResources().getIdentifier("icon", "drawable", getPackageName());

Dadurch wird die ID des „Icon“-Drawables abgerufen. Sie müssen den String-Wert jedoch immer noch manuell mit getString() abrufen.

Verwendung von Java Reflection

Ein anderer Ansatz besteht darin, Java Reflection zu verwenden, um die Ressourcen-ID abzurufen String-Wert direkt eingeben. Allerdings kann diese Methode in einigen Szenarios fehlschlagen, beispielsweise wenn die Code-/Ressourcenverkleinerung aktiviert ist oder wenn der Ressourcenname nicht mit dem Feldnamen übereinstimmt (z. B. für Zeichenfolgenressourcen).

try {
    Field idField = R.drawable.class.getDeclaredField("icon");
    int resId = idField.getInt(null);
    String resString = getResources().getString(resId);
} catch (NoSuchFieldException | IllegalAccessException e) {
    e.printStackTrace();
}

Hybrider Ansatz

Ein hybrider Ansatz kann das Beste aus beiden Welten bieten. Übergeben Sie den Zeichenfolgenwert an die Methode und lassen Sie sie intern getIdentifier() verwenden, um die Ressourcen-ID abzurufen. Dadurch wird sichergestellt, dass die Methode nur die Zeichenfolge empfängt und dennoch Zugriff auf die ID und den Zeichenfolgenwert ermöglicht.

Beispiel:

private void processResource(String resourceName) {
    int resId = getResources().getIdentifier(resourceName, "drawable", getPackageName());
    if (resId != 0) {
        // Do something with the resource ID and string value...
    }
}

Durch Auswahl der meisten Mit der geeigneten Lösung für Ihren Anwendungsfall können Sie sowohl die Ressourcen-ID als auch den Zeichenfolgenwert effektiv abrufen und in der Android-Entwicklung nutzen.

Das obige ist der detaillierte Inhalt vonWie kann ich Ressourcen-IDs und Zeichenfolgenwerte in Android effizient 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