4 Stimmen

Gibt es eine Möglichkeit, Ressourcen zur Laufzeit von Android willkürlich zu laden?

Ich habe einige XML-Ressourcen in meiner Android-App. Jede hat einen anderen Namen wie "Fahrrad.xml" und "Auto.xml". Ich würde gerne wissen, ob es eine Möglichkeit gibt, Ressourcen basierend auf Bedingungen während der Laufzeit zu laden.

Als ein Beispiel... Angenommen, ich hätte eine Texteingabe in meiner App. Wenn der Benutzer "Fahrrad" eingibt, kann meine App eine XML-Ressource mit diesem Namen nachschlagen, parsen und laden. Wenn er hingegen "Auto" eingibt, würde er die Daten aus der anderen XML-Datei erhalten.

Bisher habe ich festgestellt, dass man zum Laden von Ressourcen die automatisch generierte "R"-Klasse verwenden muss, wodurch man bei der Kompilierung auf das Hardcoding von Ressourcen beschränkt ist.

7voto

CommonsWare Punkte 950864

Ich habe bisher festgestellt, dass zum Laden von Ressourcen zu laden, muss man die autogenerierte "R"-Klasse, die Ressourcen zur Kompilierungszeit hart kodieren zur Kompilierzeit.

Sie können verwenden Resources#getIdentifier() um die ID einer Ressource anhand ihres Namens und Typs zur Laufzeit zu ermitteln. Dabei wird die Reflexion der R-Klasse verwendet, was relativ teuer ist. Entweder machen Sie das nicht oft, oder Sie zwischenspeichern die Ergebnisse.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X