Heim >Java >javaLernprogramm >Wie rufe ich eine Android-Ressourcen-ID und die entsprechende Zeichenfolge ab?

Wie rufe ich eine Android-Ressourcen-ID und die entsprechende Zeichenfolge ab?

Barbara Streisand
Barbara StreisandOriginal
2024-12-22 07:45:42887Durchsuche

How to Retrieve an Android Resource ID and its Corresponding String?

Android: Ressourcen-ID aus String abrufen

Problem

Sie müssen eine Ressourcen-ID an eine Methode übergeben, möchten aber auch Zugriff darauf entsprechende String-Ressource. Sie haben beispielsweise R.drawable.icon und möchten sowohl die Ganzzahl-ID als auch die Zeichenfolge „icon“.

Lösung

Verwendung von Resources.getIdentifier()

Eine Lösung besteht darin, die Methode getIdentifier() in der Resources-Klasse zu verwenden. Diese Methode verwendet den String-Ressourcennamen und den Ressourcentyp (z. B. zeichenbar) als Argumente und gibt die zugehörige Ganzzahl-ID zurück.

// Get the integer ID for the icon
int id = resources.getIdentifier("icon", "drawable", getPackageName());

// Retrieve the string resource
String stringResource = resources.getString(id);

Verwendung von Reflection

Eine weitere Option besteht darin, Reflektion zu verwenden, um direkt auf das Ressourcen-ID-Feld zuzugreifen. Beachten Sie, dass diese Lösung in Release-Builds mit aktivierter Code-/Ressourcenverkleinerung möglicherweise nicht funktioniert.

// Get the R.drawable class
Class<?> clazz = R.drawable.class;

// Get the field for the icon resource
Field idField = clazz.getDeclaredField("icon");

// Get the integer ID
int id = idField.getInt(null);

// Retrieve the string resource
String stringResource = resources.getString(id);

Kombination beider Ansätze

Für maximale Flexibilität können Sie beide Ansätze kombinieren . Übergeben Sie den String-Ressourcennamen an die Methode und verwenden Sie die bevorzugte Technik (Reflection oder getIdentifier()) innerhalb der Methode, um die ID und den String abzurufen.

// Method that accepts the string resource name
public void processResource(String resourceName) {
  // Get the R.drawable class
  Class<?> clazz = R.drawable.class;

  try {
    // Try using reflection to get the ID
    Field idField = clazz.getDeclaredField(resourceName);
    int id = idField.getInt(null);

    // Retrieve the string resource
    String stringResource = resources.getString(id);
  } catch (Exception e) {
    // Fallback to using getIdentifier()
    int id = resources.getIdentifier(resourceName, "drawable", getPackageName());
    String stringResource = resources.getString(id);
  }

  // Use the ID and string as needed in your method
  ...
}

Das obige ist der detaillierte Inhalt vonWie rufe ich eine Android-Ressourcen-ID und die entsprechende Zeichenfolge ab?. 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