MyTetra Share
Делитесь знаниями!
Урок 21. Создание и вызов Activity
22.04.2017
12:01
Раздел: Android - Ресурсы - StartAndroid

Урок 21. Создание и вызов Activity


03 октября 2011


В этом уроке мы:

- создадим и вызовем второе Activity в приложении

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

  

Создадим проект:

Project name: P0211_TwoActivity
Build Target: Android 2.3.3
Application name: TwoActivity
Package name: ru.startandroid.develop.p0211twoactivity
Create Activity: MainActivity

 

Откроем main.xml и создадим такой экран:


1

2

3

4

5

6

7

8

9

10

11

12

13

<?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">

    <Button

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:text="Go to Activity Two"

        android:id="@+id/btnActTwo">

    </Button>

</LinearLayout>

 

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

 

Открываем MainActivity.java и пишем код:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

package ru.startandroid.develop.p0211twoactivity;

 

import android.app.Activity;

import android.os.Bundle;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

 

public class MainActivity extends Activity implements OnClickListener {

 

  Button btnActTwo;

 

  /** Called when the activity is first created. */

  @Override

  public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.main);

 

    btnActTwo = (Button) findViewById(R.id.btnActTwo);

    btnActTwo.setOnClickListener(this);

  }

 

  @Override

  public void onClick(View v) {

    switch (v.getId()) {

    case R.id.btnActTwo:

      // TODO Call second activity

      break;

    default:

      break;

    }

  }

}

 

Мы определили кнопку btnActTwo и присвоили ей Activity в качестве обработчика. Реализация методаonClick для кнопки пока заполнена частично - определяем, какая кнопка была нажата. Чуть позже здесь мы будем вызывать второй экран. Но сначала этот второй экран надо создать.



Класс ActivityTwo создан. Он абсолютно пустой. Нам надо реализовать метод onCreate, который вызывается при создании Activity:


1

2

3

4

5

6

7

8

9

10

11

12

13

package ru.startandroid.develop.p0211twoactivity;

 

import android.app.Activity;

import android.os.Bundle;

 

 

public class ActivityTwo extends Activity {

 

  @Override

  protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

  }

}

 

Не хватает вызова метода setContentView, который указал бы классу, чем заполнять экран. Этому методу на вход требуется layout-файл. Давайте создадим его в папке layout, там же где и main

 

Заполним этот файл следующим кодом:


1

2

3

4

5

6

7

8

9

10

11

12

13

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout

    xmlns:android="http://schemas.android.com/apk/res/android"

    android:orientation="vertical"

    android:layout_width="match_parent"

    android:layout_height="match_parent">

    <TextView

        android:id="@+id/textView1"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:text="This is Activity Two">

    </TextView>

</LinearLayout>

 

Экран будет отображать TextView с текстом "This is Activity Two". Используем файл two.xml в методе setContentView в ActivityTwo.java


1

2

3

4

protected void onCreate(Bundle savedInstanceState) {

  super.onCreate(savedInstanceState);

  setContentView(R.layout.two);

}

(добавляете только строку 3)


 

Нам осталось вернуться в MainActivity.java и довершить реализацию метода onClick (нажатие кнопки), а именно - прописать вызов ActivityTwo. Открываем MainActivity.java и добавляем строки:


1

2

3

4

case R.id.btnActTwo:

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

  startActivity(intent);

  break;

(добавляете только строки 2 и 3)

 

Обновите импорт (CTRL+SHIFT+O), сохраните все и можем всю эту конструкцию запускать. При запуске появляется MainActivity



















Нажимаем на кнопку и переходим на ActivityTwo


















 

Код вызова Activity пока не объясняю и теорией не гружу, урок и так получился сложным. Получилось много текста и скриншотов, но на самом деле процедура минутная. Поначалу, возможно, будет непонятно, но постепенно втянемся. Создадим штук 5-6 новых Activity в разных проектах и тема уляжется в голове.

Пока попробуйте несколько раз пройти мысленно эту цепочку действий и усвоить, что для создания Activity необходимо создать класс (который наследует android.app.Activity) и

создать соответствующую запись в манифест-файле.


Так же в этом разделе:
 
MyTetra Share v.0.52
Яндекс индекс цитирования