Intereting Posts
Android-программирование: как рисовать многострочный текст в прямоугольнике? Proguard Retrace не работает с информацией о времени выполнения stacktrace, например E / AndroidRuntime (10237): В эмуляторе Android можно заметить вибрационные эффекты? Android. Представления, наложенные на последний кадр полноэкранного видео, не перерисовываются правильно при включении и выключении экрана. TextView: shadowDx / Dy / Radius in dip? Android: как отключить отладку для загрузки apk Как увеличить высоту строки таблицы в соответствии с экранами? Редактор макета студии Android показывает пользовательские свойства вида? Chrome Browser для Android больше не поддерживает -webkit-overflow-прокрутку? Есть ли альтернатива? Интерфейс Android Radio Layer (RIL) и / dev / Как играть в Android в Android-телефоне Как очистить все строки от TableLayout? Android Honeycomb: NetworkOnMainThreadException даже при использовании AsyncTask и без строгого режима? Adb обновить нерыночный apk? Ключ для Android-приложения для Android

Hardcoded string "row three", следует использовать ресурс @string

Я начинающий разработчик Android, я пытался запустить эту линейную компоновку в 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> 

И я заметил:
1) желтая линия под android:text="Yellow"
2) желтая строка под android:text="row four"
Треугольник предупреждает, говорит [I18N] Hardcoded string "Yellow", should use @string resource " и то же самое для остальных предупреждений. [I18N] Hardcoded string "Yellow", should use @string resource " предложение?

Solutions Collecting From Web of "Hardcoded string "row three", следует использовать ресурс @string"

Неправильная практика заключается в жестком кодировании строк в ваших файлах макета. Вы должны добавить их в строковый файл ресурсов, а затем ссылаться на них из своего макета.

Это позволяет обновлять каждое появление слова «Желтый» во всех макетах одновременно, просто редактируя файл strings.xml.

Это также чрезвычайно полезно для поддержки нескольких языков, так как отдельный файл strings.xml может использоваться для каждого поддерживаемого языка.

Пример: файл XML, сохраненный в res / values ​​/ strings.xml:

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

Этот макет XML применяет строку к виду:

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

Точно так же цвета должны храниться в цветах.xml, а затем ссылаться с помощью @ color / color_name

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

Вы должны создать их под strings.xml

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

Вы должны заменить и ссылаться так

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

Не используйте @strings, даже если файл XML говорит string.xml, иначе он не будет работать.

Неправильная практика заключается в том, чтобы жестко закодировать строки в файлы / код макета. Вы должны добавить их в строковый файл ресурсов, а затем ссылаться на них из своего макета.

  1. Это позволяет обновлять каждое вхождение одного и того же слова во всех
    В то же время, просто редактируя файл strings.xml .
  2. Это также чрезвычайно полезно для supporting multiple languages как отдельный strings.xml file может использоваться для каждого поддерживаемого языка
  3. Фактическая точка системы @string , пожалуйста, прочитайте документацию по локализации . Это позволяет легко находить текст в приложении, а затем переводить его.
  4. Строки могут быть легко интернационализированы, что позволяет вашему приложению support multiple languages with a single application package file (APK).

Выгоды

  • Допустим, вы использовали ту же строку в 10 разных местах кода. Что делать, если вы решите изменить его? Вместо того, чтобы искать, где все это было использовано в проекте, вы просто меняете его один раз, и изменения отражаются везде в проекте.
  • Строки не загромождают ваш код приложения, оставляя его понятным и простым в обслуживании.