hardcoded string should use string resource что это

Редактор кода

Рассмотрим возможности редактора кода при написании приложений.

Инъекция языка

Если вы скопируете текст в формате JSON и вставите его между кавычками, то экранирование произойдёт автоматически.

Сам текст не обязательно копировать из другого источника, можете создавать JSON-запись в самой студии. Снова нажимаем Alt + Enter и выбираем пункт Edit JSON Fragment. Появится новая панель, в котором вы можете набирать текст, а в редакторе кода будет выводиться валидный код для работы.

Аналогично можно работать с регулярным выражением.

Перемещаем метод вверх или вниз

Сворачиваем фрагменты кода

Студия умеет сворачивать фрагменты кода, которые являются структурной единицей, например, метод. Щёлкнув по фиговине (как это называется?), вы убираете код, чтобы не мозолил вам глаза.

Но мало кто знает, что свернуть можно любой свой код. Для этого ставим два слеша, как в комментариях, а затем добавляем слово region (без пробела) и через пробел название блока. Это будет началом блока. Конец блока обозначаем через //endregion

Теперь отмеченный блок можно сворачивать. Наведите порядок у себя в коде.

Редактор кода для XML в режиме Text

[I18N] Hardcoded string

Когда вы редактируете код разметки экрана активности, то можете встретить предупреждение [I18N] Hardcoded string «Какой-то ваш текст», should use @string resource.

Вам нужно заменить свой жёстко закодированный текст на строковый ресурс. Установите курсор внутри текста, нажмите комбинацию клавиш Alt+Enter и выберите пункт Extract string resource. Далее в диалоговом окне придумываете имя для ресурса и выбираете файл для хранения (обычно, strings.xml).

Предположим, вы заменили везде текст на строковые ресурсы и решили отредактировать текст у кнопки. Снова ставим курсор на нужном тексте и нажимаем комбинацию клавиш Ctrl+B, у вас сразу откроется файл strings.xml и не надо его искать в дереве проекта.

Вкладки

Каждый файл проекта открывается в собственной вкладке. Вкладки можно менять местами перетаскиванием с помощью мыши. Переключаться можно через клавиши Alt-стрелка влево и Alt-стрелка вправо. Также можно вызвать Switcher с помощью комбинации Ctrl+Tab.

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

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

Вкладку можно «отстегнуть». Нажмите на вкладку и удерживая мышку, перетащите вкладку на рабочий стол. Также её можно вернуть обратно.

Каждая вкладка имеет контекстное меню и значок для закрытия. Изучите пункты меню самостоятельно. Например, можно разбить редактор кода на две части (по вертикали или горизонтали), чтобы видеть разные участки кода одновременно.

Строка состояния

В нижней части студии находится строка состояния. В нижнем правом углу имеется текстовая метка с информацией о текущем местоположении курсора в документе (номер строки:номер символа). Если подвести мышку к надписи, то можно увидеть всплывающую подсказку Click to go to line. Щелчок вызовет диалоговое окно для быстрого перехода на нужную позицию.

Рядом также имеется текстовая метка с указанием кодировки, в которой пишется код. В последних версиях студии это стало проблемой для русскоязычных программистов. Студия может использовать системную кодировку, которая часто бывает windows-1551, но в Android принято использовать UTF-8, и после запуска приложения вместо текста можно увидеть кракозябры.

Остальные элементы не представляют интереса.

Информационный желоб

Слева от редактора кода имеется отдельная полоска, которую я назвал информационным желобом. На ней можно увидеть различные значки. Например, у класса MainActivity выводится значок, связанный XML-разметкой для данного класса. Нажав на него, вы можете быстро открыть нужный XML-файл.

Также выводятся значки для методов. Каждый тип методов имеет свой цвет.

В данном желобе устанавливаются точки останова (breakpoint).

Доступно контекстное меню. Например, можно выбрать показ номеров строки.

На границе желоба и редактора кода имеются маркеры для сворачивания блоков кода.

Если нажать клавишу F11, то текущая строка будет помечена как закладка и появится галочка.

Анализ кода

Справа от редактора кода находится анализатор кода. Если код содержит ошибки, сверху будет гореть красный прямоугольник. Если ошибок нет, но есть предупреждения, то будет гореть жёлтый прямоугольник. При правильном коде горит зелёный прямоугольник.

В случае ошибок или предупреждений также выводятся зарубки. Если подвести к ним курсор мыши, то можно прочитать сообщение или сразу перейти в нужную строку для исправления, нажав на неё. Также есть синие зарубки для выделенных слов и задач TODO.

Автодополнение кода

Студия поддерживает автодополнение кода, когда по первым символам подставляет нужные слова. Распространяться на эту тему не буду.

Основная комбинация Ctrl+Space.

Если написать имя метода, например, «private void onClick()» и нажать комбинацию Ctrl+Shift+Enter, то студия сгенерирует фигурные скобки.

Когда у вас есть кусок кода и вы начинаете исправлять его, то возникает следующая ситуация. Студия предлагает подсказку, вы соглашаетесь и нажимаете Enter.

В данном случае мы хотим заменить переменную name на catName, но если нажмём на Enter, то подсказка присоединится к старому коду и мы получим catNamename. В следующий раз нажимайте на клавишу Tab и тогда старый вариант заменится на новый.

Читайте также:  хрустят колени при ходьбе что делать чем лечить

Также изучите другие клавиатурные комбинации.

Периодически используйте команды меню Code: Reformat Code и Rearrange Code. Первая команда полезна для Java-кода, а вторая для XML-разметки. Код станет аккуратнее.

Перевод на новую строку

Если курсор находится в середине выражения и вы хотите начать новую строку, не обязательно гнать курсор в конец строки. Просто нажмите комбинацию Shift+Enter.

Источник

Hardcoded string button should use string resource

Рассмотрим возможности редактора кода при написании приложений.

Инъекция языка

Студия позволяет делать инъекцию в существующий код. Что это такое? Например, JSON имеет свой формат данных. Если писать код вручную в данном формате, то можно столкнуться с неудобствами — вам приходится экранировать символы в большом фрагменте кода. Студия поможет нам. Создадим переменную jsonString:

Если вы скопируете текст в формате JSON и вставите его между кавычками, то экранирование произойдёт автоматически.

Сам текст не обязательно копировать из другого источника, можете создавать JSON-запись в самой студии. Снова нажимаем Alt + Enter и выбираем пункт Edit JSON Fragment. Появится новая панель, в котором вы можете набирать текст, а в редакторе кода будет выводиться валидный код для работы.

Аналогично можно работать с регулярным выражением.

Перемещаем метод вверх или вниз

Иногда хочется для лучшей читаемости поменять местами методы в коде. Вырезать и вставлять в новое место слишком утомительно. Есть способ лучше. Установите указатель мыши на имени метода и нажмите комбинацию Ctrl+Shift+Стрелка_Вверх — метод автоматически перепрыгнет через метод над собой. Как переместить вниз вы сами догадаетесь.

Сворачиваем фрагменты кода

Студия умеет сворачивать фрагменты кода, которые являются структурной единицей, например, метод. Щёлкнув по фиговине (как это называется?), вы убираете код, чтобы не мозолил вам глаза.

Но мало кто знает, что свернуть можно любой свой код. Для этого ставим два слеша, как в комментариях, а затем добавляем слово region (без пробела) и через пробел название блока. Это будет началом блока. Конец блока обозначаем через //endregion

Теперь отмеченный блок можно сворачивать. Наведите порядок у себя в коде.

Редактор кода для XML в режиме Text

[I18N] Hardcoded string

Когда вы редактируете код разметки экрана активности, то можете встретить предупреждение [I18N] Hardcoded string «Какой-то ваш текст», should use @string resource.

Студия информирует вас о возможной проблеме, если вы в будущем задумаетесь о локализации приложения. Странное выражение I18N переводится очень просто. Здесь зашифровано слово INTERNATIONALIZATION — первая буква I, последняя буква N и восемнадцать букв между ними.

Вам нужно заменить свой жёстко закодированный текст на строковый ресурс. Установите курсор внутри текста, нажмите комбинацию клавиш Alt+Enter и выберите пункт Extract string resource. Далее в диалоговом окне придумываете имя для ресурса и выбираете файл для хранения (обычно, strings.xml).

Предположим, вы заменили везде текст на строковые ресурсы и решили отредактировать текст у кнопки. Снова ставим курсор на нужном тексте и нажимаем комбинацию клавиш Ctrl+B, у вас сразу откроется файл strings.xml и не надо его искать в дереве проекта.

Ещё один приём — если вы хотите видеть вместо кода andro реальный текст из ресурса, то нажмите комбинацию Ctrl+- (клавиша минус на цифровой клавиатуре) и он подтянется.

Вкладки

Каждый файл проекта открывается в собственной вкладке. Вкладки можно менять местами перетаскиванием с помощью мыши. Переключаться можно через клавиши Alt-стрелка влево и Alt-стрелка вправо. Также можно вызвать Switcher с помощью комбинации Ctrl+Tab.

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

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

Вкладку можно «отстегнуть». Нажмите на вкладку и удерживая мышку, перетащите вкладку на рабочий стол. Также её можно вернуть обратно.

Каждая вкладка имеет контекстное меню и значок для закрытия. Изучите пункты меню самостоятельно. Например, можно разбить редактор кода на две части (по вертикали или горизонтали), чтобы видеть разные участки кода одновременно.

Строка состояния

В нижней части студии находится строка состояния. В нижнем правом углу имеется текстовая метка с информацией о текущем местоположении курсора в документе (номер строки:номер символа). Если подвести мышку к надписи, то можно увидеть всплывающую подсказку Click to go to line. Щелчок вызовет диалоговое окно для быстрого перехода на нужную позицию.

Рядом также имеется текстовая метка с указанием кодировки, в которой пишется код. В последних версиях студии это стало проблемой для русскоязычных программистов. Студия может использовать системную кодировку, которая часто бывает windows-1551, но в Android принято использовать UTF-8, и после запуска приложения вместо текста можно увидеть кракозябры.

Читайте также:  Что значит тумба на африканском

Остальные элементы не представляют интереса.

Информационный желоб

Слева от редактора кода имеется отдельная полоска, которую я назвал информационным желобом. На ней можно увидеть различные значки. Например, у класса MainActivity выводится значок, связанный XML-разметкой для данного класса. Нажав на него, вы можете быстро открыть нужный XML-файл.

Также выводятся значки для методов. Каждый тип методов имеет свой цвет.

В данном желобе устанавливаются точки останова (breakpoint).

Доступно контекстное меню. Например, можно выбрать показ номеров строки.

На границе желоба и редактора кода имеются маркеры для сворачивания блоков кода.

Если нажать клавишу F11, то текущая строка будет помечена как закладка и появится галочка.

Анализ кода

Справа от редактора кода находится анализатор кода. Если код содержит ошибки, сверху будет гореть красный прямоугольник. Если ошибок нет, но есть предупреждения, то будет гореть жёлтый прямоугольник. При правильном коде горит зелёный прямоугольник.

В случае ошибок или предупреждений также выводятся зарубки. Если подвести к ним курсор мыши, то можно прочитать сообщение или сразу перейти в нужную строку для исправления, нажав на неё. Также есть синие зарубки для выделенных слов и задач TODO.

Автодополнение кода

Студия поддерживает автодополнение кода, когда по первым символам подставляет нужные слова. Распространяться на эту тему не буду.

Основная комбинация Ctrl+Space.

Если написать имя метода, например, «private void onClick()» и нажать комбинацию Ctrl+Shift+Enter, то студия сгенерирует фигурные скобки.

Когда у вас есть кусок кода и вы начинаете исправлять его, то возникает следующая ситуация. Студия предлагает подсказку, вы соглашаетесь и нажимаете Enter.

В данном случае мы хотим заменить переменную name на catName, но если нажмём на Enter, то подсказка присоединится к старому коду и мы получим catNamename. В следующий раз нажимайте на клавишу Tab и тогда старый вариант заменится на новый.

Также изучите другие клавиатурные комбинации.

Периодически используйте команды меню Code: Reformat Code и Rearrange Code. Первая команда полезна для Java-кода, а вторая для XML-разметки. Код станет аккуратнее.

Перевод на новую строку

Если курсор находится в середине выражения и вы хотите начать новую строку, не обязательно гнать курсор в конец строки. Просто нажмите комбинацию Shift+Enter.

Урок #9

Ранее в предыдущих уроках я неоднократно упоминал такое понятие, как ресурсы. Давайте разберемся, что это такое.

В ресурсах хранятся следующие вещи:

На самом деле, вы уже работали с ресурсами, когда меняли верстку нашего пока что единственного экрана. Возможно, вы заметили, что Android Studio показывает предупреждения, например, для атрибута android:text у TextView :

Hardcoded string «Hello», should use @string resource

Все потому что строки в Android принято хранить в ресурсах. Почему? Потому что такой подход позволяет легко обрабатывать различные конфигурации. Под конфигурациями я имею в виду такие вещи, как, к примеру, язык (англоязычному пользователю показываем английский текст, русскоязычному — русский), плотность пикселей на экране (для дисплеев с высоким разрешением используем картинки в большем разрешении), тип устройства (для телефонов используем одну верстку, для планшетов — другую) и т.д. Также использование ресурсов позволяет избежать дублирования: вы можете использовать одну и туже строку (или, к примеру, цвет) в нескольких местах.

Класс R

Вы уже могли заметить, что мы используем некий таинственный класс R при обращении, например, к View по идентификатору. Класс R (от слова Resources) генерируется автоматически при сборке проекта (Android Studio генерирует его динамически — а раньше нужно было пересобирать проект). При помощи него мы можем обращаться к ресурсам (идентификатор View — тоже ресурс). Если вы его откроете, то увидите что-то вроде этого:

Изменять вручную этот файл нельзя. Точнее, можно, но он сгенерируется заново, и все ваши изменения пропадут.

Строки

Если вы откроете этот файл, то увидите, что там уже есть одна строка: это название нашего приложения.

Форматирование строк

В Java-коде мы устанавливаем текст в TextView:

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

Метод getString() получает строку из ресурсов, и форматирует её, используя переданные аргументы. Если строку не нужно форматировать, то передается только идентификатор строки.

Запустите приложение, чтобы убедиться, что все работает.

Локализация строк

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

Создание нового файла ресурсов в Android Studio

В появившемся окне в поле File name введите «strings». Resource type — «values», Source set — «main», Directory name — «values»:

Создание файла ресурсов со строками

Снизу слева вы можете увидеть различные варианты, по которым мы можем дифференцировать конфигурацию пользовательского устройства. На данный момент нам нужен пункт Locale. Выберите его и нажмите на кнопку >> чуть правее. Появятся два дополнительных списка, Language и Specific Region Only. В списке Language выберите ru: Russian:

Читайте также:  что делать если в такси забыл кошелек

Выбор конфигурации для файла ресурсов

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

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

После того, как вы нажмете на кнопку ОК, создастся новый файл:

Созданный файл строковых ресурсов

Файл пока почти что пуст: по умолчанию существующие строки добавляться в него не будут. Есть два варианта добавления строк для перевода:

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

Кнопка «Open Editor»

Нажмите на нее. Откроется редактор строк:

Редактор строк в Android Studio

Непереведённые строки подсвечиваются красным. Давайте переведем. Для этого поставьте курсор в соответствующую ячейку и введите текст. Получится вот так:

Редактор строк в Android Studio

А русский файл строк теперь выглядит так:

Почему я сказал, что реализация оставляет желать лучшего, ведь это так удобно? Да, это удобно, когда вы работаете с такими маленькими строками и когда у вас всего две локали. Когда строки перестают умещаться в экран и количество локалей превышает 3, работа с этим инструментом превращается в ад, и приходится редактировать файлы строк вручную. На самом деле, это не так страшно, так что не пугайтесь и обязательно всегда переводите приложение 🙂

Точно так же локализация работает и для других ресурсов: создайте директорию в ресурсах (либо методом, показанным выше, либо вручную) с соответствующим названием и скопируйте туда нужные локализованные ресурсы.

По умолчанию (если для конфигурации пользователя не найдены ресурсы в приложении) берутся стандартные ресурсы. То есть, например, в нашем случае, пользователь с белорусской локалью увидит текст на английском.

Цвета

Как видите, в нем уже есть три цвета. Эти цвета сгенерировала Android Studio при создании проекта.

Они нужны для стилизации приложения — вы могли заметить, что первый цвет — это цвет верхней части приложения, второй — цвет статусбара, а третьим подсвечивается поле для ввода текста.

I am new in Android app development and using Java language. My problem is every time I make a TextView or Button there is a triangle with the exclamation mark below them. and when I click it I saw a message saying:

hardcoded string “Button”, should use @string resource

I have two activities, in my main activity there is a Button that when you click it you will go in second activity. But when I go to my main.java to make a code for the button. There’s always the above shown error. I think the eclipse can’t find the id of my button and same for my TextView they have same error message.

Here is the code I made:

I am using the latest eclipse classic and ADT august issue. The platform is Android 4.1 API 16.

Источник

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

Я начинающий разработчик Android, я пытался запустить этот линейный макет в eclipse:

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

ОТВЕТЫ

Ответ 1

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

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

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

Пример: Файл XML сохраняется при res/values ​​/strings.xml:

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

Ответ 2

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

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

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

Ответ 3

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

Преимущества

Ответ 4

Вы можете перейти в режим разработки и выбрать «Исправить» в нижней части предупреждения. Затем появится всплывающее окно (похоже, что он собирается зарегистрировать новую строку) и voila, ошибка исправлена.

Источник

Сказочный портал