Frage

Ich habe eine Netzwerkbibliothek für meine Android-App geschrieben und möchte auf einen URL-Wert zugreifen können, den ich in meinem definiert habe strings.xml datei aus dieser Bibliothek.Das Problem ist, dass die Bibliothek keine Aktivität oder kein Fragment oder ähnliches ist und daher keinen Zugriff auf den normalen Kontext oder andere Dinge hat, die ein erstklassiger Android-Bürger Ihnen bietet.Gibt es eine Möglichkeit für mich, auf den Wert zuzugreifen, ohne einen Kontext zu haben (oder ohne dass bei Funktionsaufrufen von Aktivitäten und Fragmenten einer übergeben wird)?

Ich weiß, dass ich auf die zugreifen kann R klasse leicht, aber alles, was mir gibt, sind Byte-Offsets - ich brauche die getString() methode, um diesen Offset in etwas Sinnvolles zu verwandeln, es sei denn, ich möchte viel Spaß beim Toben im Raw-Byte-Land haben (was ich vermeiden möchte).

Danke!

War es hilfreich?

Lösung

Nein, gibt es nicht, und das manuelle Parsen von Daten auf niedriger Ebene ist hier definitiv nicht die Lösung.Der ganze Sinn der Ressourcen besteht darin, abgerufen zu werden GEM zur Kontextqualifikation (daher das leistungsstarke Qualifikationssystem), und deshalb habe ich diesen Vorschlag in der anderen Frage gemacht, die Sie gerade gestellt haben.:-)

Wenn Sie keinen Weg angeben (z. B. Methodenparameter), können Sie die Ressource nicht abrufen.Es kommt zu einem Punkt, an dem Sie die Architektur Ihrer Bibliothek überdenken sollten:warum brauchen Sie den URI qualifiziert?Wenn Sie sich in einer Bibliothek befinden, verfügt die Client-App über einen eigenen Kontext und kann Ihrer Bibliothek sicher einen Kontext bereitstellen, wodurch die Ressource abgerufen wird.Wenn dies nicht der Punkt ist (dh auf den URI im Code zugreifen), sollten Sie keine Ressource verwenden, sondern stattdessen eine endgültige statische Variable, wie ich vorgeschlagen habe.

Es gibt einige Fälle, in denen Sie beim Umgang mit URIs von der Qualifizierungsfunktion profitieren können, aber wie gesagt, wenn Sie nur Ihre Bibliothek verwenden, möchten Sie wahrscheinlich stattdessen eine Variable, die im Code definiert ist.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top