Android: Wie injiziere ich ein String-Element in ein anderes String-Element in XML?

8

Ich würde gerne wissen, ob es eine Möglichkeit gibt, ein <string> -Element, das in einer XML-Datei definiert ist, in ein anderes <string> -Element einzufügen / zu injizieren, und zwar nur mit XML.

Zum Beispiel könnte ich haben:

%Vor%

und ich suche nach etwas wie:

%Vor%

, sodass getString(R.string.about_application) zu "Autor: Francesco" führen würde.

Ich weiß, dass ich die beiden Elemente im Java-Code mit String.format(string, formatArgs) wie zum Beispiel kombinieren könnte:

%Vor%

und dann im Code verwenden

%Vor%

aber ich möchte es direkt in XML machen.

Kann jemand mir einen Weg vorschlagen, es zu tun?

    
Francesco Feltrinelli 15.09.2010, 22:36
quelle

3 Antworten

14

Wenn ich verstehe, was Sie tun möchten, dann interne (geparste) allgemeine Entitäten könnte Ihnen helfen, das zu erreichen, wonach Sie suchen.

Ein Beispiel, wie Sie den Wert "Francesco" als eine Entität namens "auth" definieren und dann in Ihrem XML verwenden können:

%Vor%

Wenn das Dokument von einem XML-Parser gelesen wird, wird es analysiert und als "gesehen" bewertet:

%Vor%     
Mads Hansen 16.09.2010, 00:30
quelle
1

Leider glaube ich nicht, dass das möglich ist. Ich habe vor einiger Zeit eine ähnliche Frage gestellt wurde gesagt, dass es nicht möglich sei.

    
Cheryl Simon 15.09.2010 22:44
quelle
0

Gradle Plugin 0.10 bringt das, was sie manifestPlaceholders nennen, was im Grunde das tut, was Sie brauchen, aber diese Funktion funktioniert derzeit nur im AndroidManifest. Es gibt jedoch ein Problem für die nächste Android Build Version 1.4 geöffnet ( 1.3 ist derzeit in der Beta4, sollte also in der Nähe von RC1 sein und könnte sehen eine 1.4 beta1 bald hoffentlich) .

Dieses Problem sollte die Platzhalter in XML-Konfigurationsdateien erweitern ( Ich bete nur, dass dies Strings-Datei und nicht nur grundlegende XML-Konfiguration enthalten ).

Von : Ссылка

  

Verwenden Sie für benutzerdefinierte Platzhalter Ersetzungen die folgende DSL zu   Konfigurieren Sie die Platzhalterwerte:

%Vor%
  

ersetzt den Platzhalter in der folgenden Deklaration:

<activity android:name=".MainActivity"> android:label="${activityLabel}" >

Ich kann es kaum erwarten, es auszuprobieren. Auf diese Weise können Sie einen Platzhalter mehrfach in der Zeichenfolgendatei platzieren und den Wert nur an einer Stelle definieren, anstatt alle Java-Dateien zu ändern, um ein Argument mit% 1 $ s hinzuzufügen

Vorerst ist die einzige saubere Lösung zwar der Entity-Trick, aber das wird nicht funktionieren, wenn Sie den Wert in Flavors überschreiben wollen, da die Entity in derselben XML-Datei definiert sein muss.

    
Xexiz 21.07.2015 12:08
quelle

Tags und Links