Строковые ресурсы
ОС Android позволяет определять строки в одном или нескольких XML-файлах ресурсов. Эти XML-файлы с определениями строковых ресурсов находятся в подкаталоге /res/values. Имена таких XML-файлов могут быть произвольными, хотя обычно это файл strings.xml.
На заметку! В некоторых выпусках Eclipse узел >resources< необходимо уточнять с помощью спецификации xmlns. Похоже, неважно, на что указывает этот xmlns — главное, чтобы он был. Например, годятся следующие два варианта:
>resources xmlns="schemas.android.com/apk/res/android" <
или
>resources xmlns="default namespace" <
Первая строка этого файла, указывающая, что он является XML-файлом с определенной кодировкой, является необязательной. Android нормально работает с ним и без этой строки.
При создании или обновлении этого файла подключаемый модуль Eclipse ADT автоматически создает или обновляет Java-класс в корневом пакете приложения по имени R.java с уникальными идентификаторами для двух указанных строковых ресурсов. Обратите внимание на размещение файла R.java в следующем примере, где приведена высокоуровневая структура каталогов для проекта, скажем, MyProject.
MyProject
\src
\com\mycompany\android\my-root-package
\com\mycompany\android\my-root-package\another-package
\gen
\com\mycompany\android\my-root-package\R.java
\assets
\res
\AndroidManifest.xml … и т.д.
На заметку! Независимо от количества файлов ресурсов, имеется только один файл R.java.
Для начала обратите внимание на то, каким образом в R.java определен класс верхнего уровня в корневом пакете: public static final class R. В этом внешнем классе R определяется внутренний класс, а именно — static final class string. В R.java этот внутренний статический класс создается в качестве пространства имен для хранения идентификаторов строковых ресурсов.
Две переменные типа static final int с именами hello и app_name — это идентификаторы ресурсов, которые представляют соответствующие строковые ресурсы. Эти идентификаторы ресурсов можно использовать в любом месте исходного кода с помощью следующей структуры:
R.string.hello
Сгенерированные идентификаторы указывают на переменные типа int, а не string. Большинство методов, принимающих строки, также принимают такие идентификаторы в качестве входных параметров. Android по мере необходимости заменяет эти целые числа строками.
Большинство приложений, приводимых в качестве примеров, определяют все строки в одном файле strings.xml, но это просто соглашение. Android может принимать любое количество произвольных файлов, если эти файлы имеют структуру XML- файлов, похожую на показанную в листинге 3.1, и эти файлы находятся в подкаталоге /res/values.
Структура этих файлов проста. Имеется корневой узел >resources<, под которым находятся один или несколько дочерних элементов >string<. Каждый элемент или узел >string< имеет соответствующее имя, которое преобразуется в атрибут id в файле R.java.
Чтобы проверить возможность наличия нескольких файлов строковых ресурсов в этом подкаталоге, можно поместить туда же еще один файл по имени stringsl.xml с содержимым, приведенным в листинге 3.3.
Листинг 3.3. Пример дополнительного файла strings.xml
>?xml version="1.0" encoding="utf-8"?<
>resources<
>string name="hello1"
>string name="app name1"
>/resources<
Подключаемый модуль Eclipse ADT проверяет уникальность этих идентификаторов на этапе компиляции и помещает их в файл R.java в виде двух дополнительных констант R.string.hellolи R.string.app_name1.
Добавить комментарий
Для отправки комментария вам необходимо авторизоваться.