Intereting Posts
Android – поддержка библиотек 23.2.0 приводят к сбою приложения Android Bluetooth Low Energy Pairing Приложение Alibaba android вызывает сбои при попытке открыть URL-адрес Выделить несколько столбцов с помощью RecyclerView «Исключение: ошибка при создании экземпляра t! Первичная розетка уже зарегистрирована ». В приложении cordova angular2 Безопасное удаление активности Android Может ли несколько приложений для Android использовать один процесс и контекст приложения? Добавление календаря и событий в Android 2.2 FrameLayout против RelativeLayout для наложений Витрина / визуальное руководство для Android-компонентов Как я могу запросить альбомы с помощью MediaBrowser? Android: применить эффекты OpenGL к камере Android ListView's setOnItemClickListener из PopupWindow не вызывается Как избежать httpsURLConnection.getInputStream () в 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 разных местах кода. Что делать, если вы решите изменить его? Вместо того, чтобы искать, где все это было использовано в проекте, вы просто меняете его один раз, и изменения отражаются везде в проекте.
  • Строки не загромождают ваш код приложения, оставляя его понятным и простым в обслуживании.