Ersetzen (oder „Aufschalten“) String in Android Library Project
-
27-09-2019 - |
Frage
Ich habe versucht, ein Android-Bibliothek-Projekt zu machen, und während des Build-Prozess funktioniert gut, ich habe in dem Projekt mit dem Ersetzen eine Ressource in einige Schwierigkeiten läuft, die die Bibliothek verwendet.
In meiner Bibliothek habe ich:
-
Ein
library_layout.xml
mitAndroid: id = "@ + id / str_my_string"
Android: layout_width = "wrap_content"
Android: layout_text = "wrap_content"
> -
Eine Java-Datei, die
ruft((Textview) this.findViewById (R.id.str_my_string)) setText (R.string.my_string);.
-
Eine Ressource
strings.xml
mitPlatzhalter
In dem Projekt mit der Bibliothek Ich habe
-
Eine Ressource
strings.xml
mitDie tatsächliche Zeichenfolge Inhalt
Das Verhalten erwarte ich, dass, wenn ich das Projekt ausführen, die Bibliothek verwenden, um die Textansicht zeigt Ist-String Inhalt , aber es enthält tatsächlich false .
Suchen Sie in der App, die die Bibliothek verwendet, I tun sehen zwei R
Dateien, und beide haben R.string.my_string
und diese beiden sind gleich dem gleichen numerischen Wert.
Lösung
Ich habe die gleiche Anordnung und das funktioniert für mich, wie erwartet.
Die Bibliothek verfügt über Layout / Klasse mit diesem Verweis auf ein String-Ressourcen:
<TextView android:id="@+id/studentSinceLabel">
Die Bibliothek stellt einen Standardwert in seiner strings.xml:
<string name="studentSinceLabel">Student Since</string>
Der Haupt App hat diesen Wert in seiner strings.xml:
<string name="studentSinceLabel">Client Since</string>
Wenn ich einen Wert für diese Ressource in der Haupt apps strings.xml givve, ich sehe „Client Da“, wenn die App läuft, wenn ich es von der Haupt apps strings.xml löschen, sehe ich den Wert aus der Bibliothek, "Student Da".
Es scheint, dieses erwartete Verhalten auf meine Lektüre hier beruht: http://developer.android.com/tools/sdk/eclipse-adt.html
Relevante Zitat aus obigem Link:
In den Fällen, in denen eine Ressource-ID sowohl in der Anwendung und die Bibliothek definiert ist, sicherzustellen, dass die Werkzeuge, dass die Ressource in der Anwendung erklärt wird Priorität und dass die Ressource in der Bibliothek Projekt wird nicht in die Anwendung APK zusammengestellt. Dies gibt die Anwendung die Flexibilität zu jeder Nutzung oder neu definiert alle Ressourcen Verhaltensweisen oder Werte, die in jeder Bibliothek definiert sind.