Хотите научиться делать приложения для андроид? В этом уроке создадим простое android приложение с несколькими активностями, используя intent - намерения, в Android Studio.

Создание проекта "My Activitys"

В Android Studio создадим новый проект, новое приложение - "My Activitys". Нажмем next, empty activity, сократим название Layout Name до main и нажмем finish. Система подготовит файлы проекта.

Редактируем внешний вид главной активности

В файле main.xml переместим выше текстовую строку элемента TextView "Hello World", в дальнейшем она нам еще понадобится.

В  файле Strings.xml добавим несколько текстовых значений, строковая переменная act1 со значением - "Первая activity", так же добавим еще два строковых элемента act2 и act3, со значениями "Вторая activity" и "Третья activity". Очистим значение элемента TextView android:text и присвоим ему android:text="@string/act1", на данной форме у нас будет написано "Первая activity".

Из компонентов Layouts  добавим RelativeLayout, на которую поместим кнопки: для вызова второй, третей активности, расположим их вертикально, проще это сделать через текстовую версию main.xml. Расположим их одну под одной, добавим третью кнопку, она нам нужна будет для закрытия формы. Так же в string.xml допишем текстовое значение btnClose со значением выход "Закрыть".

Присвоим кнопкам через "@string/" значения этих кнопок, сохраним наш проект.

Создаем новые Layout файлы

В папке res/layout добавим новый xml layout файл main2.xml и main3.xml, для описания разметки наших будущих activitys. Что бы не создавать снова внешний вид скопируем из файла main.xml и вставим в наши xml файлы разметку(в новых Activity должны быть ConstraintLayout и TextView). В main3.xml переприсвоим значение   TextView act3, что бы у нас была надпись "Третья activity", вставим разметку и в main2.xml, так же присвоим TextView значение act2, соответственно это будет "Вторая activity". Сохраним проект.

Создание классов для Activity

В папке Java нашего проекта создадим дополнительно два класса: Activity2 И Activity3. Добавим в Activity2 код из MainActivity, что бы не набирать его снова, изменим имя класса и (R.layout.main) на (R.layout.main2), скопируем код и вставим в Activity3, исправим имя активности  и layout main3. Сохраним проект.

Внесение активностей в манифест

В файле AndroidManifest.xml опишем наши активности, добавим еще две записи, скопируем описание MainActivity и исправим android:name=".Activity2", изменим  категорию LAUNCHER на DEFAULT. Повторим процедуру для  Activity3 изменив имя активности, сохраним файл.

Пишем основной код в MainActivity

Найдем наши кнопки:

Button act2 = (Button)findViewById(R.id.button);

При нажатии на первую кнопку будет запускаться "Вторая activity", продублируем код для остальных кнопок:

Button act3 = (Button)findViewById(R.id.button2);
Button btnClose = (Button)findViewById(R.id.button3);

Создадим обработчик нажатия на кнопку(запуск второй активности):

act2.setOnClickListener(new View.OnClickListener() {

            @Override

            public void onClick(View v) {

                Intent intent = new Intent();

                intent.setClass(MainActivity.this, Activity2.class);

                startActivity(intent);

            }

        });

Напишем обработчик нажатия на кнопку(запуск третьей активности):

 act3.setOnClickListener(new View.OnClickListener() {

            @Override

            public void onClick(View v) {

                Intent intent = new Intent();

                intent.setClass(MainActivity.this, Activity3.class);

                startActivity(intent);

            }

        });

Для btnClose так же напишем обработчик:

btnClose.setOnClickListener(new View.OnClickListener() {

            @Override

            public void onClick(View v) {

                finish();

            }

});

Сохраним наш проект.

Пуск в эмуляторе Android Studio

Наконец то запустим в эмуляторе наше приложение. Как мы видим при нажатии на кнопку "Вторая активность" запускается форма вторая активность, при нажатии на кнопку "Третья activity" запускается соответственно третья активность, при нажатии на кнопку "Закрыть" закрывается MainActivity она же главная форма в приложении. По такому же принципу устроены и действуют приложения с несколькими либо большим количеством Activitys через Intent передаются намерения и открываются формы новых окон, как если б это было в приложениях Windows.

Полный текст strings.xml

<resources>
    <string name="app_name">My Activitys</string>
    <string name="act1">Первая Activity</string>
    <string name="act2">Вторая Activity</string>
    <string name="act3">Третья Activity</string>
    <string name="btnClose">Закрыть</string>
</resources>

Полный текст MainActivity.java

package ru.maxfad.myactivitys;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        Button act2 = (Button)findViewById(R.id.button);
        Button act3 = (Button)findViewById(R.id.button2);
        Button btnClose = (Button)findViewById(R.id.button3);


        act2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent();
                intent.setClass(MainActivity.this, Activity2.class);
                startActivity(intent);
            }
        });

        act3.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent();
                intent.setClass(MainActivity.this, Activity3.class);
                startActivity(intent);
            }
        });

        btnClose.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                finish();
            }
        });


    }
}

Полный текст Activity2.java

package ru.maxfad.myactivitys;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;

/**
 * Created by maxfad on 30.04.2017.
 */

public class Activity2 extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main2);
    }
}

Полный текст Activity3.java

package ru.maxfad.myactivitys;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;

/**
 * Created by maxfad on 30.04.2017.
 */

public class Activity3 extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main3);
    }
}

Полный текст main.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="ru.maxfad.myactivitys.MainActivity">

    <RelativeLayout
        android:layout_width="369dp"
        android:layout_height="490dp"
        tools:layout_editor_absoluteX="-1dp"
        tools:layout_editor_absoluteY="69dp">

        <Button
            android:id="@+id/button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="83dp"
            android:text="@string/act2"
            android:layout_alignParentTop="true"
            android:layout_alignLeft="@+id/button2"
            android:layout_alignStart="@+id/button2" />

        <Button
            android:id="@+id/button2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/act3"
            tools:layout_editor_absoluteX="108dp"
            tools:layout_editor_absoluteY="85dp"
            android:layout_below="@+id/button"
            android:layout_centerHorizontal="true" />

        <Button
            android:id="@+id/button3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/btnClose"
            android:layout_below="@+id/button2"
            android:layout_centerHorizontal="true" />

    </RelativeLayout>

    <RelativeLayout
        android:layout_width="370dp"
        android:layout_height="65dp"
        tools:layout_editor_absoluteX="-2dp"
        tools:layout_editor_absoluteY="4dp">

        <TextView
            android:id="@+id/textView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:layout_centerVertical="true"
            android:text="@string/act1"
            android:textAlignment="center"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintVertical_bias="0.099" />
    </RelativeLayout>
</android.support.constraint.ConstraintLayout>

Полный текст main2.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="ru.maxfad.myactivitys.MainActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/act2"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.099" />
</android.support.constraint.ConstraintLayout>

Полный текст main3.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="ru.maxfad.myactivitys.MainActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/act3"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.099" />
</android.support.constraint.ConstraintLayout>

Полный текст AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="ru.maxfad.myactivitys">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">

        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".Activity2">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
        <activity android:name=".Activity3">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
    </application>
</manifest>

В этом видео смотрите как с помощью Intent сделать Android приложение с несколькими Activity:

Рекомендуем смотреть видео в полноэкранном режиме, в настойках качества выбирайте 1080 HD, не забывайте подписываться на канал в YouTube, там Вы найдете много интересного видео, которое выходит достаточно часто. Приятного просмотра!

 С уважением, авторы сайта Компьютерапия




Понравилась статья? Поделитесь ею с друзьями и напишите отзыв в комментариях!

Новые статьи

We use cookies on our website. Some of them are essential for the operation of the site, while others help us to improve this site and the user experience (tracking cookies). You can decide for yourself whether you want to allow cookies or not. Please note that if you reject them, you may not be able to use all the functionalities of the site.

Ok