Android SDK: начало следующей активности

После завершения предыдущего урока, у вас есть приложение, которое показывает активность (на одном экране) с текстовым полем и кнопкой. В этом уроке мы добавим код MainActivity , который начинает новую деятельность, когда пользователь нажимает кнопку "Отправить".

Ответ на кнопку "Отправить"

Чтобы среагировать на на событие кнопки on-click, откройте файл макета activity_main.xml и добавьте атрибут android:onClick к элементу <Button> :

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/button_send"
    android:onClick="sendMessage" />

Значение атрибутаAndroid: OnClick , "SendMessage" , - это имя метода деятельности системного вызова, когда пользователь нажимает кнопку.

Откройте класс MainActivity (расположенный в каталоге проекта src/) и добавьте соответствующий метод:

/ ** Вызывается, когда пользователь нажимает кнопку Отправить * / 
общественного  недействительными SendMessage ( Посмотреть зрения )  { 
    // Сделать что-то по нажатию кнопки 
}

Для этого вам необходимо импортировать класс View:

import android.view.View;

Совет: В Eclipse для Android нажмите Ctrl + Shift + O, чтобы импортировать отсутствующие классы (Cmd + Shift + O на Mac).

Для того, чтобы система, соответствующая этому методу, соответствовала методу имени, данному android:onClick , подпись должна быть именно такой, как показано на рисунке. В частности, метод должен:

  • Быть публичным
  • Иметь значение void return
  • Иметь View в качестве единственного параметра (это будет View , который был выбран)

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

Построение цели

Цель - это объект, который обеспечивает связь между выполнением отдельных компонентов (например, два вида деятельности). Цель представляет собой "намерение что-то сделать". Вы можете использовать ее для широкого круга задач, но чаще всего цели используются для того, чтобы начать другую деятельность.

Внутри метода SendMessage (), создайте цель, чтобы начать процесс DisplayMessageActivity :

Intent intent = new Intent(this, DisplayMessageActivity.class);

Конструктор, используемый здесь, принимает два параметра:

  • Context в качестве первого параметра ( this используется потому, что класс Activity является подклассом Context)
  • Класс компонента приложения, которому система должна доставлять Intent (в данном случае активность, которая должна быть запущена)

Отправка цели другим приложениям

Цель, созданная в этом уроке - это то, что считается явным намерением, потому что намерение определяет точный компонент приложения. Тем не менее, цельможет быть неявной, в этом случае Intent не указывает нужный компонент, но позволяет любому приложению, установленному на устройстве, реагировать на цели до тех пор, пока они удовлетворяют мета-данным спецификаций для действия, указанного в различных параметрах цели. Для получения дополнительной информации см. описание класса о взаимодействии с другими приложениями.

Примечание: Ссылка на DisplayMessageActivity выдаст ошибку, если вы используете IDE, скажем, Eclipse Android, поскольку класс еще не существует. Проигнорируйте ошибку сейчас; вы создадите класс в ближайшее время.

Цель не только позволяет начать другую деятельность, но она может нести пакет данных к цели. Внутри метода SendMessage (), используйте findViewById (), чтобы получить элемент EditText и добавить текстовое значение с целями:

Intent intent = new Intent(this, DisplayMessageActivity.class);
EditText editText = (EditText) findViewById(R.id.edit_message);
String message = editText.getText().toString();
intent.putExtra(EXTRA_MESSAGE, message);

Примечание: Теперь нужно импортировать операторы для android.content.Intent и android.widget.EditText. Вы определите EXTRA_MESSAGE, постоянный в данный момент.

Intent может нести с собой набор различных типов данных, например, дополнительные  пары ключ-значение. Метод PutExtra () принимает название раздела в первом параметре и значение в качестве второго параметра.

Для следующей цели, для запроса дополнительных данных, вы должны определить ключ для дополнительной цели, используя public constant. Таким образом, добавьте определение EXTRA_MESSAGE в верх класса MainActivity:

public class MainActivity extends Activity {
    public final static String EXTRA_MESSAGE = "com.example.myfirstapp.MESSAGE";
    ...
}

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

Начало второй активности

Для активации функции, вызовитеstartActivity () и передайте Intent. Система получает этот вызов и запускает экземпляр Activity указанный в Intent.

С помощью этого нового кода, полный метод SendMessage () , который инициируется кнопкой Отправить, теперь выглядит следующим образом:

/** Called when the user clicks the Send button */
public void sendMessage(View view) {
    Intent intent = new Intent(this, DisplayMessageActivity.class);
    EditText editText = (EditText) findViewById(R.id.edit_message);
    String message = editText.getText().toString();
    intent.putExtra(EXTRA_MESSAGE, message);
    startActivity(intent);
}

Теперь нужно создать классDisplayMessageActivity для того, чтобы это работало.

Создание второй активности

Рисунок 1. Мастер новой деятельности в Eclipse.

Для создания нового вида деятельности, используя Eclipse Android:

  1. Нажмите New  на панели инструментов.
  2. В появившемся окне откройте папку Android и выберите Android Activity. Нажмите Next.
  3. Выберите BlankActivity и нажмите кнопку Next.
  4. Заполните параметры для деятельности:
    • Project: MyFirstApp
    • Activity Name: DisplayMessageActivity
    • Layout Name: activity_display_message
    • Title: My Message
    • Hierarchial Parent: com.example.myfirstapp.MainActivity
    • Navigation Type: None

    Нажмите Готово.

Если вы используете другую среду IDE или командную строку, создайте новый файл с именем DisplayMessageActivity.java в каталоге проекта src/, рядом с оригинальным файлом MainActivity.java.

Откройте файл DisplayMessageActivity.java. Если вы использовали Eclipse Android для создания этой деятельности:

  • Класс уже включает в себя осуществление методаOnCreate ().
  • Также осуществляется метод onCreateOptionsMenu (), но вы не будете нуждаться в нем для этого приложения, так что можете удалить его.
  • Осуществление метода onOptionsItemSelected (), который обрабатывает поведение для действия поведения клавиши Up. Оставьте как есть.

Поскольку ActionBar API доступны только на HONEYCOMB (API 11 уровня) и выше, необходимо добавить условие вокруг метода getActionBar () для проверки текущей версии платформы. Кроме того, необходимо добавить тег @SuppressLint ("NewApi") в метод OnCreate (), чтобы избежать ошибок lint.

DisplayMessageActivity класс должен выглядеть следующим образом:

public class DisplayMessageActivity extends Activity {

    @SuppressLint("NewApi")
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_display_message);

        // Make sure we're running on Honeycomb or higher to use ActionBar APIs
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
            // Show the Up button in the action bar.
            getActionBar().setDisplayHomeAsUpEnabled(true);
        }
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
        case android.R.id.home:
            NavUtils.navigateUpFromSameTask(this);
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
}

Если вы использовали IDE Eclipse, кроме, обновите DisplayMessageActivity класса с выше код.

Все подклассы активность должны реализовывать OnCreate () метод. Система вызывает эту при создании нового экземпляра деятельности. Этот метод, где вы должны определить активность макет с setContentView () метод и где вы должны выполнить начальную настройку для деятельности компонентов.

Примечание: Если вы используете IDE Eclipse, кроме того, проект не содержит activity_display_message макете в просьбе setContentView () . Это нормально, потому что вы будете обновлять этот метод позже, и не будет использовать этот макет.

Добавить строку заголовка

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

Если вы используете IDE Eclipse, кроме, добавить заголовок нового вида деятельности к strings.xml файла:

<resources>
    ...
    <string name="title_activity_display_message">My Message</string>
</resources>

Добавьте его в манифесте

Все мероприятия должны быть объявлены в вашем файле манифеста, AndroidManifest.xml , используя <activity> элемента.

При использовании Eclipse, инструменты для создания деятельности, он создает запись по умолчанию. Если вы используете другой IDE, вам нужно добавить манифест запись самостоятельно. Это должно выглядеть примерно так:

<application ... >
    ...
    <activity
        android:name="com.example.myfirstapp.DisplayMessageActivity"
        android:label="@string/title_activity_display_message"
        android:parentActivityName="com.example.myfirstapp.MainActivity" >
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="com.example.myfirstapp.MainActivity" />
    </activity>
</application>

Android: parentActivityName атрибут Объявляет имя родительского действия этой деятельности в рамках логической иерархии приложения. Система использует это значение для осуществления навигации по умолчанию поведения, такие как перемещения вверх на Android 4.1 (API 16 уровня) и выше. Вы можете обеспечить такой же поведение навигации для более старых версий Android с помощью поддержки библиотеки и добавления <meta-data> элемента, как показано здесь.

Примечание: Ваш Android SDK уже должна включать в себя новейшие андроид поддержку библиотек. Он включен с ADT Bundle, но если вы используете другой IDE, вы должны установили ее во время добавления Платформы и пакеты шаг. При использовании шаблонов в затмение, поддержка библиотеки будет автоматически добавлена ??в ваше приложение проекта (вы можете увидеть JAR файл библиотеки, перечисленные в Android Зависимости ). Если вы не используете затмение, необходимо вручную добавить библиотеку в проект-следуйте инструкции для создания вспомогательной библиотеки затем вернуться сюда.

Если вы разрабатываете с Затмения, вы можете запустить приложение сейчас, но много не бывает. При нажатии на кнопку Отправить начинается второй деятельности, но он использует по умолчанию "Hello World" макет, полученные из шаблона. Вы скоро обновит деятельности вместо отображения пользовательского представления текста, так что если вы используете другой IDE, не беспокойтесь о том, что приложение не будет еще компиляции.

Получите намерениях

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

В DisplayMessageActivity класса OnCreate () метод, получить намерение и извлечь послание от MainActivity :

Intent intent = getIntent();
String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);

Отобразится сообщение

Для отображения сообщения на экране, создайте TextView виджет и установить текст с помощью зейТех () . Затем добавить TextView в качестве корневого вид макета деятельности, передав ей в setContentView () .

Полный OnCreate () метод DisplayMessageActivity теперь выглядит следующим образом:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    // Get the message from the intent
    Intent intent = getIntent();
    String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);

    // Create the text view
    TextView textView = new TextView(this);
    textView.setTextSize(40);
    textView.setText(message);

    // Set the text view as the activity layout
    setContentView(textView);
}

Теперь вы можете запустить приложение. Когда она откроется, введите сообщение в текстовом поле, нажмите кнопку Отправить, а сообщение появляется на втором деятельности.

Рисунок 2. Оба вида деятельности в конечном приложения, работающие на Android 4.0.

Вот и все, вы создали свой первый Android-приложение!

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

Компьютерная помощь: задайте свой вопрос

Укажите email, на который я смогу выслать ответ на ваш вопрос
Хотите получить ответ на вопрос? Просто поставьте лайк на эту страницу.

Поставь лайк, дружище!