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?
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>
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ć.
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.
- to pozwala aktualizować każde wystąpienie tego samego słowa we wszystkich
układy w tym samym czasie poprzez edycję plikustrings.xml
. - jest również niezwykle przydatny dla
supporting multiple languages
jako oddzielnystrings.xml file
może być używany dla każdego obsługiwanego języka - 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. - 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.
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.
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" />
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