hardcoded string "row three", should use @ string resource

Jestem początkującym programistą Androida, próbowałem uruchomić ten układ liniowy w eclipse:

    <?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>

I zauważyłem:
1) żółta linia Pod android:text="Yellow"
2) Żółta linia Pod android:text="row four"
Trójkąt ostrzega [I18N] Hardcoded string "Yellow", should use @string resource " i to samo dla reszty ostrzeżeń.Jakieś sugestie?

Author: Gauraw Yadav, 2012-01-05

5 answers

Nie jest dobrą praktyką tworzenie ciągów kodowych w plikach układów graficznych. Powinieneś dodać je do pliku zasobów ciągów, a następnie odwołać się do nich z układu.

To pozwala na aktualizację każdego wystąpienia słowa "Żółty" we wszystkich układach w tym samym czasie, po prostu edytując swoje ciągi.plik xml.

Jest również niezwykle przydatny do obsługi wielu języków jako osobnych łańcuchów.dla każdego obsługiwanego języka można użyć pliku xml.

Przykład: Plik XML zapisany w res / wartości / ciągi.xml:

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

Ten układ XML stosuje ciąg znaków do widoku:

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

Podobnie kolory powinny być przechowywane w kolorach.xml, a następnie odwołuje się za pomocą @color / color_name

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="Black">#000000</color>
</resources>
 103
Author: Kuffs,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-01-05 14:24:32

Musisz je utworzyć pod struny.xml

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

Musisz zastąpić i odwołać się w ten sposób

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

Nie używaj @ strings, nawet jeśli plik XML mówi strings.xml albo nie będzie działać.

 10
Author: Hanson So,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-04-24 18:31:50

Nie jest dobrą praktyką tworzenie ciągów kodowych w plikach układów/ kodzie. Powinieneś dodać je do pliku zasobów ciągów, a następnie odwołać się do nich z układu.

  1. to pozwala aktualizować każde wystąpienie tego samego słowa we wszystkich
    układy w tym samym czasie poprzez edycję pliku strings.xml.
  2. jest również niezwykle przydatny dla supporting multiple languages jako oddzielny strings.xml file może być używany dla każdego obsługiwanego języka
  3. rzeczywisty punkt posiadania @string systemu prosimy o zapoznanie się z lokalizacja dokumentacja. Pozwala łatwo zlokalizować tekst w Twoja aplikacja, a później mieć go przetłumaczone.
  4. ciągi można łatwo internacjonalizować, co pozwala na zastosowanie do support multiple languages with a single application package file (APK).

Korzyści

  • powiedzmy, że użyłeś tego samego ciągu w 10 różnych miejscach w kodzie. A jeśli zdecydujesz się to zmienić? Zamiast szukać gdzie to wszystko został użyty w projekcie wystarczy go zmienić raz i zmienia są odzwierciedlone wszędzie w projekcie.
  • ciągi znaków nie zaśmiecają kodu aplikacji, pozostawiając go przejrzystym i łatwy w utrzymaniu.
 8
Author: Xar E Ahmer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-05-25 14:41:35

Możesz przejść do trybu projektowania i wybrać "napraw" na dole Ostrzeżenia. Następnie pojawi się wyskakujące okienko (wygląda na to, że zamierza zarejestrować nowy ciąg znaków) i voila, błąd został naprawiony.

 1
Author: Keith Peñas,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-12-31 15:30:26

Dobrą praktyką jest zapisywanie tekstu wewnątrz ciągu znaków.xml

Przykład:

String.xml

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

I układ wewnętrzny:

<TextView android:layout_width="fill_parent"
      android:layout_height="wrap_content"
      android:text="@string/yellow" />
 0
Author: SahdevRajput74,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-09 09:15:44