Android. Запуск экрана. Активити


И так в пред идущем урок мы закончили верстку экрана авторизации.  А в этом уроке я расскажу как cделать переход между экранами. Мы разберем что такое Activity и как же сделать навигацию от одного экрана к другому.

Для начала немного теории.  В Андроиде идет связка работы Java/Kotlin  кода с xml файлами. Когда мы работали с ресурсами из xml файлов - мы обращались к ним через @string или @drawable. А если нам нужно обратиться к ресурсам из Java/Kotlin кода - мы можем это сделать через специльный сгенерировынный класс R в котором храняться ссылки на xml файлы и их внутренние теги (образно). Нужно помнить что все xml файлы должны лежать в своих папках. Как вы может уже заметили – файл с разметкой для UI  лежит в папке res/layout, а вот весь код который пишем на Java/Kotlin должен быть размещен в папке src/java или src/kotlin

Также нужно понимать. Что системе андроид нужно знать какие компоненты используются в приложении и как с ними работать. Для этого при разработке приложений мы всегда декларируем все используемые компоненты андроида в специально файле AndroidManifest.xml.  При установки приложения – Андроид считывает файл AndroidManifest  и запоминает какие компоненты используются внутри приложения. Вы можете открыть этот файл и увидите там тег Application а в нем тег activity. У которого есть аттрибут name который указывает на существующий класс MainActivity. 

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

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

Перейдем немного к практике.  Для того чтоб создать и запустить второй экран. Нам надо сделать 4 вещи:

  1. Создать файл разметки c произвольным UI. Пусть Будет TextView  с текстом Second screen
  2. Создать свой класс Активити с методом fun onCreate(savedState: Bundle) и унаследоваться от базового класса Activity который находится внутри Android
  3. Обьявить компонент activity внутри файла AndroidManifest.xml
  4. Добавить обработчик нажатия на кнопку и запустить новое активити.

Ну и приступим к реализации нашего плана. 

  1. В проводнике файлов и папок в левой части Android Studio ищем папку app/src/main/res/layout и создаем в папке  файл activity_second.xml.  Нужно на папку layout нажать правой кнопкой и выбрать опцию New Layout Resource File. Создастся файл из заготовки с необходимыми тегами и аттрибутами внутри. Выглядит он примерно так:

 

Послед того как мы создали файл. Открываем его и модифицирируем как нам угодно. Я просто создам текст по среди экрана. Для этого задам значение аттриюута android:text=”Second screen” и выставлю необходимые аттрибуты для того чтоб текст расположился по центру.

 

ПРИМЕР КОДА ТЕКСТ ВЬЮ и как это выглядит.

 

  1. Теперь нам нужно создать свой класс и унаследовать его от уже существующего внутри Андроид Activity.  В проводнике находим папку src/main/java  или src/main/kotlin (в зависимости что у вас есть) В ней выбираем любую которая нам нравится- правая кнопка мышы выбираем пункт New -> Kotlin Class/File и создаем класс ActivitySecond.

Android studio создала который нам нужно наполнить следующим контактом.

ПРИМЕР кода с описанием

 

Где class SecondActivity: Activity() – обьявлением класса который наследуется от класса Activity 

НУЖНО ЛИ ОН КРИТ ЕСЛИ МОЖНО КОНСТРУТКОР? ДЛЯ ОБЛЕГЧЕНИЯ
override fun onCreate(savedState: Bundle?) – обьявление функции которая переопределяет функцию родителя.  Эта функция – это точка входа. Эта самая первая функция нашего экрана которую Андроид вызовет. Именно тут начинается жизненый цикл экрана. Поэтому тут мы вполне себе можем вызвать функцию setContentView() и паредать в нее адресс нашего xml файла с разметой для нового экрана R.layout.activity_seconds


и выглядит это вот так:
ПРИМЕР КОДА АКТИВИТИ

 

  1. Теперь нам осталось зарегестрироавть наш экран в AndroidManifest  в файле. Открываем файл который расположен по пути src/main/AndroidManifest.xml и добавляем свой тег <activity> с аттрибутом android:name=”полный путь к файлу класса ”

 

 Вот все. Теперь нам осталось добавить обработчик нажатия из предидущего урока на кнопку на уже существующем экране из предидущих уроков или из свежесозданного проекта и запустить новый экран. Для этого нам необходимо созхдать функцию для запуска активити –назовемм ее goToNextScreen() и вызовем ее при нажатии на кнопку из обработчика кнопки. Выглядить функция будет так:

ПРИМЕР функции
val intent = Intent(this, SecondActivity::class.java) – создание обьекта класса Intent (от слова Intentntion,намерение) куда мы передаем существущий экран как контекст и класс который будет создан и запущен. У которого вызовется метод  fun onCreate(savedSate: Bundle) для создания и отрисовки нового экрана.
startActivity(intent) – и есть наш запуск экрана. Мы попросили андроид запустить другой экран.
Вот и все. По нажатии на кнпоку мы увидим как запустился наш экран.


полный код с обработчиком и запуском выглядит вот так:

 ПРИМЕР

 


Нужна помощь? Спросите в нашем Телеграмм канале - Start-Develop RU / Start-Develop EN