Окончание. Предыдущая часть в статье Hello, World. Часть 2

Плагин Eclipse автоматически создает один из этих файлов внешнего вида: main.xml. В только что сделанном вами приложении «Hello World» создание данного файла было проигнорировано, так как вы создали его программно. Тем самым, вы научились понимать суть происходящих процессов, однако, как вы уже поняли, удобнее и проще создавать внешний вид вашего приложения посредством файла XML. Следующие процедуры покажут вам как изменить существующее приложение для использования XML.

1. В Eclipse Package Explorer, откройте папку /res/layout/ файл main.xml (по открытию, вам может понадобиться кликнуть на вкладку «main.xml» внизу окна для того чтобы увидеть источник XML). Замените содержимое файла следующим XML:

[code lang=»xml»]
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/textview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:text="@string/hello"/>
[/code]

Сохраните файл.

2. Внутри папки res/values/ откройте файл strings.xml. Именно здесь вы сохраняете текстовые сроки, появляющиеся по умолчанию в вашем пользовательском интерфейсе. Если вы используете Eclipse, тогда ADT по умолчанию покажет вам следующие две строки, hello и app_name. Переименуйте hello на какое-то другое название. Например, «Hello, Android! I am a string resource!» Полностью, файл должен выглядеть так:

[code lang=»xml»]
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello">Hello, Android! I am a string resource!</string>
<string name="app_name">Hello, Android</string>
</resources>
[/code]

3. Теперь откройте и измените свой класс HelloAndroid, при этом используя раскладку XML. Измененный файл должен выглядеть так:

[code lang=»xml»]
package com.example.helloandroid;

import android.app.Activity;
import android.os.Bundle;

public class HelloAndroid extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
}
[/code]

Изменения не копируйте, вносите вручную, так вы лучше запомните код и научитесь его вводить. Когда вы начнете вводить «R.layout.main» плагин предложит вам свои подсказки. Кстати, во многих ситуациях они действительно помогают разработчику.

Вместо передачи объекту View значения setContentView(), вы отсылаете его на ресурс внешнего вида. Данный ресурс имеет идентификатор R.layout.main, который на самом деле является скомпилированным объектом внешнего вида, заданным в файле /res/layout/main.xml. Плагин Eclipse автоматически создает внутри вашего проекта ссылку на класс R.java. Если вы не установили Eclipse, тогда класс R.java будет создан одновременно с тем как вы запустите Ant для проверки приложения. (О классе R мы поговорим чуть позже.)

Теперь перезапустите приложение – так как вы создали конфигурацию запуска, все что вам понадобится для запуска приложения это кликнуть на зеленой иконке в виде стрелочки , или выбрать Run > Run History > Android Activity. Помимо изменения строки TextView, приложение выглядит также. Вот мы и показали, что два различных подхода к программированию внешнего вида приложения дают одинаковые результаты.

R class
В Eclipse, откройте файл R.java (находится в паке gen/ [Generated Java Files]). Он должен выглядеть так:

[code lang=»js»]
package com.example.helloandroid;

public final class R {
public static final class attr {
}
public static final class drawable {
public static final int icon=0x7f020000;
}
public static final class id {
public static final int textview=0x7f050000;
}
public static final class layout {
public static final int main=0x7f030000;
}
public static final class string {
public static final int app_name=0x7f040001;
public static final int hello=0x7f040000;
}
}
[/code]

Файл проекта R.java является индексом, ведущим ко всем ресурсам, обозначенным в данном файле. В исходном коде данный класс используется как своеобразная ссылка, ведущая к ресурсам, включенным в ваш проект. Данный инструмент особенно мощный с таким IDE как Eclipse, так как он позволяет быстро и интерактивно установить конкретный элемент, который вы ищите.

Возможно, у вас код файла будет выглядеть несколько иначе (возможно шестнадцатиричные значения будут отличаться). Отметьте для себя класс «layout», и его элемент «main». Здесь плагин Eclipse создал класс для XML файла main.xml. По мере добавления в ваш проект других ресурсов (таких как строки в файле res/values/string.xml или элемент drawables в каталоге res/drawable/) вы замените как изменился файл R.java для их поддержки.

Если вы не установили Eclipse, данный класс будет создан инструментом Ant во время запуска приложения.

Никогда не редактируйте этот файл вручную.

Отладка вашего проекта

План Android для Eclipse также обладает отличной интеграцией с Отладчиком Eclipse. Чтобы продемонстрировать это, давайте намеренно введем в код ошибку. Измените свой исходный код HelloAndroid чтобы он выглядел так:

[code lang=»js»]
package com.example.helloandroid;

import android.app.Activity;
import android.os.Bundle;

public class HelloAndroid extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Object o = null;
o.toString();
setContentView(R.layout.main);
}
}
[/code]

Данное изменение просто вводит NullPointerException в ваш код. Если вы вновь запустите приложение, то увидите следующее:

Нажмите «Force Quit» для насильного закрытия приложения.

Для определения ошибки, введите в свой исходный код точку остановки программы в строчку Object o = null; (дважды кликните на маркере напротив строки исходного кода). Затем выберите Run > Debug History > Hello, Android для входа в режим отладки. Ваше приложение вновь запустится в эмуляторе, на этот раз приостановив свое действие в точке остановке, заданной вами. Теперь вы можете открыть и поэтапно отладить приложение при помощи инструмента Eclipse’s Debug Perspective.

Создание проекта без программы Eclipse

Если вы не пользуетесь Eclipse (установлена другая IDE, инструменты командной строки или просто текстовые редакторы) тогда плагин Eclipse не сможет вам помочь облегчить процесс программирования. Однако не волнуйтесь – функциональности это не отнимет.

Плагин Android для Eclipse по сути своей является лишь оболочкой вокруг набора инструментов, включенных в Android SDK. Поэтому, «обернуть» этот инструментарий можно и другим способом, например файлом ant.

Android SDK включает в себя инструмент под названием «android», который может быть использован для создания всех видов исходного кода каталоговых модулей для вашего проекта, также как и для создания ant-совместимого файла build.xml. Это позволит вам программировать проект напрямую в командной строке, либо интегрировать его в другие IDE по выбору.

Например, для создания подобного нашему, проекта HelloAndroid используйте данный оператор:

[code lang=»js»]
android create project \
—package com.example.helloandroid \
—activity HelloAndroid \
—target 2 \
—path <path-to-your-project>/HelloAndroid
[/code]

Этот код создаст необходимые папки и файлы проекта в указанном вами проекте.