it-swarm.com.de

hartcodierte Zeichenfolge "Zeile drei", sollte @string-Ressource verwenden

Ich bin ein Anfänger von Android-Entwicklern. Ich habe versucht, dieses lineare Layout in Eclipse auszuführen.

    <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:orientation="vertical"
    Android:layout_width="fill_parent"
    Android:layout_height="fill_parent">

  <LinearLayout
      Android:orientation="horizontal"
      Android:layout_width="fill_parent"
      Android:layout_height="fill_parent"
      Android:layout_weight="1">
      <TextView
          Android:text="red"
          Android:gravity="center_horizontal"
          Android:background="#aa0000"
          Android:layout_width="wrap_content"
          Android:layout_height="fill_parent"
          Android:layout_weight="1"/>
      <TextView
          Android:text="green"
          Android:gravity="center_horizontal"
          Android:background="#00aa00"
          Android:layout_width="wrap_content"
          Android:layout_height="fill_parent"
          Android:layout_weight="1"/>
      <TextView
          Android:text="blue"
          Android:gravity="center_horizontal"
          Android:background="#0000aa"
          Android:layout_width="wrap_content"
          Android:layout_height="fill_parent"
          Android:layout_weight="1"/>
      <TextView
          Android:text="yellow"
          Android:gravity="center_horizontal"
          Android:background="#aaaa00"
          Android:layout_width="wrap_content"
          Android:layout_height="fill_parent"
          Android:layout_weight="1"/>
  </LinearLayout>

  <LinearLayout
    Android:orientation="vertical"
    Android:layout_width="fill_parent"
    Android:layout_height="fill_parent"
    Android:layout_weight="1">
    <TextView
        Android:text="row one"
        Android:textSize="15pt"
        Android:layout_width="fill_parent"
        Android:layout_height="wrap_content"
        Android:layout_weight="1"/>
    <TextView
        Android:text="row two"
        Android:textSize="15pt"
        Android:layout_width="fill_parent"
        Android:layout_height="wrap_content"
        Android:layout_weight="1"/>
    <TextView
        Android:text="row three"
        Android:textSize="15pt"
        Android:layout_width="fill_parent"
        Android:layout_height="wrap_content"
        Android:layout_weight="1"/>
    <TextView
        Android:text="row four"
        Android:textSize="15pt"
        Android:layout_width="fill_parent"
        Android:layout_height="wrap_content"
        Android:layout_weight="1"/>
  </LinearLayout>

</LinearLayout>

Und ich habe bemerkt:
1) gelbe Linie unter Android:text="Yellow"
2) gelbe Linie unter Android:text="row four"
das Dreieck warnt [I18N] Hardcoded string "Yellow", should use @string resource " und das gleiche gilt für den Rest der Warnungen.

49
user941015

Es ist nicht empfehlenswert, Strings in Ihre Layoutdateien zu kodieren. Sie sollten sie einer String-Ressourcendatei hinzufügen und sie dann in Ihrem Layout referenzieren. 

Auf diese Weise können Sie jedes Vorkommen des Wortes "Gelb" in allen Layouts gleichzeitig aktualisieren, indem Sie einfach die Datei strings.xml bearbeiten. 

Es ist auch äußerst hilfreich für die Unterstützung mehrerer Sprachen, da für jede unterstützte Sprache eine separate Datei "strings.xml" verwendet werden kann.

beispiel: XML-Datei, die unter res/values ​​/ strings.xml gespeichert wurde:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="yellow">Yellow</string>
</resources>

Diese Layout-XML wendet eine Zeichenfolge auf eine Ansicht an:

<TextView Android:layout_width="fill_parent"
          Android:layout_height="wrap_content"
          Android:text="@string/yellow" />

Auf ähnliche Weise sollten Farben in colors.xml gespeichert und dann mit @ color/color_name referenziert werden

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="Black">#000000</color>
</resources>
112
Kuffs

Es ist nicht empfehlenswert, Strings in Ihre Layoutdateien codes zu kodieren. Sie sollten sie einer String-Ressourcendatei hinzufügen und sie dann in Ihrem Layout referenzieren.

  1. Dies ermöglicht Ihnen, jedes Vorkommen des gleichen Wortes in allen zu aktualisieren
    Layouts gleichzeitig durch Bearbeiten Ihrer strings.xml-Datei.
  2. Es ist auch äußerst nützlich für supporting multiple languages, da für jede unterstützte Sprache ein Separater strings.xml file verwendet werden kann
  3. den eigentlichen Punkt des @string-Systems lesen Sie bitte in der /- Lokalisierungs Dokumentation. Es ermöglicht Ihnen, Text in __. Ihrer App zu finden und später übersetzen zu lassen.
  4. Strings können einfach internationalisiert werden, wodurch Ihre Anwendung möglich istzu support multiple languages with a single application package file (APK).

Leistungen

  • Angenommen, Sie haben dieselbe Zeichenfolge an zehn verschiedenen Stellen im Code verwendet. Was ist, wenn Sie sich dazu entscheiden, sie zu ändern? Anstatt nach dem Ort zu suchen, an dem alles Im Projekt verwendet wurde, ändern Sie es einfach einmal und Änderungen werden Überall im Projekt widergespiegelt.
  • Strings verschmutzen Ihren Anwendungscode nicht und lassen ihn klar und pflegeleicht.
10
Xar E Ahmer

Sie müssen sie unter Strings.xml erstellen

<string name="close">Close</string>    

Sie müssen so ersetzen und referenzieren

Android:text="@string/close"/>

Verwenden Sie @strings nicht, obwohl in der XML-Datei strings.xml angezeigt wird.

10
Hanson So

Sie können in den Entwurfsmodus wechseln und unten in der Warnung "Fix" wählen. Dann erscheint ein Popup (scheint, als würde es den neuen String registrieren) und voila, der Fehler ist behoben.

3
Keith Peñas

Es empfiehlt sich, Text in String.xml zu schreiben

beispiel:

String.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="yellow">Yellow</string>
</resources>

und innerhalb des Layouts:

<TextView Android:layout_width="fill_parent"
      Android:layout_height="wrap_content"
      Android:text="@string/yellow" />
0
SahdevRajput74