2017-08-30 1 views
0

Ich versuche, ein XML-Attribut mit einer Variablen in den Ressourcen in Android Studio ohne Glück zu setzen.Festlegen des XML-Attributs mit einer Variablen

So etwas wie dies funktioniert:

<resources> 
    <string name="Key">@string/Key</string> 
</resources> 

Aber so etwas wie dies nicht:

<resources> 
    <string name="Key" custom-attribute="@string/Key"/> 
</resources> 

Wie verwenden Sie Variablen in XML-Attribute?

Dies ist nicht die gleiche Frage wie Android xml reference within xml doesn't work.

Das erste Beispiel funktioniert korrekt, ich kann Variablen verwenden, die einen Feldwert festlegen. Das zweite Beispiel funktioniert nicht, ich kann kein Attribut setzen.

+0

Can u bitte erarbeiten Ihre Frage mehr? Was ist der Anwendungsfall dieses Problems? Wo benutzt du das? Es könnte eine andere Methode geben, um Ihr tatsächliches Problem zu lösen. –

+0

Mein Anwendungsfall möchte verschiedene Server-URLs im Salesforce Mobile SDK. Hier ist ihre Dokumentation: https://developer.salesforce.com/docs/atlas.en-us.mobile_sdk.meta/mobile_sdk/oauth_custom_login_host.htm So möchte ich die Server-URL pro Umgebung ändern lassen. Ich stelle die Serverurl als eine Variable in der Zeichenkette ein. –

+0

Erstellen Sie die Datei server.xml im Ordner xml. Sie müssen ein neues Verzeichnis mit dem Namen xml erstellen, da es standardmäßig nicht dort ist. In der Dokumentation müssen Sie in der xml erstellen –

Antwort

0

Hier können wir Ressourcen in res/Ordner definieren. Sie können Ihre eigene Datei erstellen und die folgenden Beispiele verwenden. Das Wert Ding wird nicht funktionieren.

<resources> 
<string name="button">Try Again</string> 
<dimen name="margin">56dp</dimen> 
<bool name="isCorrect">false</bool> 
<color name="background">#fff</color> 
<drawable name="icon">@drawable/ic_about_us</drawable> 
<integer name="count">56</integer> 
<string-array name="days"> 
     <item>Monday</item> 
     <item>Sunday</item> 
</string-array> 
</resources> 

und die Verwendung von R.id.nameOfResource Here ist viel mehr über sie zu erkunden. Hoffe, das hilft.

Update: Wir können auch solche Ressourcen in build.gradle Skript definieren.

android { 
    buildTypes.each { 
     it.resValue 'string', 'serverLink', "https://mylink.com" 
    } 
} 
+0

Tut mir leid, nicht zu sehen, wie ich ein XML-Attribut einstellen kann. Für etwas wie . Das Farbattribut von Variablen ziehen zu lassen. –

+0

Das ist nicht gültig, denke ich. Da wir keine Zeichenfolge oder irgendeine Art von Ressource wie dieser definieren können. Selbst während wir unsere eigenen Stilattribute definieren, können wir der String-Ressource keinen Typ von Farbe und Wert einer Zeichenkette geben. –

+0

String und Farbe sind Beispiele. Es könnte sein Suchen Sie einfach nach einem Attribut für ein XML-Feld auf eine definierte Variable festlegen. –

0
<resources> 
    <string name="Key">Some Value</string> 
</resources> 

Sollten Sie gleiche Ergebnis wie:

<resources> 
    <string name="Key" value="Some Value"/> 
</resources> 

davon, weil ich empfehlen würde, das erste Beispiel verwendet wie richtig funktioniert.

+0

Die Verwendung von Schlüssel und Wert war wahrscheinlich ein Fehler als Beispiel. Wenn Sie ein benutzerdefiniertes Attribut festlegen möchten, ist was ich suche. Anstelle von Value könnte auch etwas wie Custom-Attr sein. –

0

Try this:

<string name="Key1">Some Text</string> 
<string name="Key2">@string/Key1</string> 

Update:

<string name="Key1">Some Text</string> 
<string name="Key2"> 
    <some-attribute>@string/Key1</some-attribute> 
</string> 
+0

Dies funktioniert für den XML-Wert, aber nicht für das Setzen eines Attributs –

+0

@DanCorey aktualisiert. –

+0

Danke, aber Felder und Attribute sind nicht das Gleiche. Sehen Sie sich https://www.w3schools.com/xml/xml_dtd_el_vs_attr.asp an –

Verwandte Themen