Heim >Java >javaLernprogramm >Wie rufe ich eine Android-Ressourcen-ID und die entsprechende Zeichenfolge ab?
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“.
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!