Доработка многоэкранного приложения в MIT App Inventor

Индивидуальные задания

Для этой пары индивидуальные задания не опубликованы

Скачать и попробовать образец

Скачать APK для Android — «На тропе», пример 00

Версия 1.0.0 от 16 октября 2026 года; размер 3,63 МиБ. Откройте ссылку на Android-телефоне, скачайте файл и откройте его для установки. Android может запросить разрешение на установку для браузера или приложения, которым открыт файл. APK предназначен для Android; на iPhone он не устанавливается.

Попробуйте два маршрута: главная → каталог → форма → назад → на главную и главная → форма → назад. В форме наберите слово, исправьте букву и введите фразу в поле пожеланий. «Отправить» пока не выполняет отправку данных.

Это учебный образец преподавателя 00 на данных первого варианта; в собственной работе сохраняйте свой вариант и проект. Проект успешно собран в APK; работа на реальном телефоне на момент выпуска ещё не проверена.

Что превращает макет в приложение

В Designer мы задаём, что видно: надписи, поля, кнопки и расположение. В Blocks задаём, что происходит после действия пользователя. Нажатие кнопки — событие Click; открытие другого экрана — действие внутри обработчика этого события.

Кнопка с текстом «Открыть каталог» сама не знает, какой экран открыть. Её видимая надпись Text и внутреннее имя компонента — разные вещи. Например, «Посмотреть маршруты» — надпись, ButtonRoutes — имя кнопки, RoutesScreen — имя экрана назначения.

У всех индивидуальных вариантов одинаковая логика: главная, каталог и форма. Имена и надписи берите из собственного листа. В варианте 01 кнопки называются иначе, чем во многих остальных вариантах: копировать его имена без проверки нельзя.

Кратко: ровные кнопки и читаемые слова

На повторение достаточно 10–12 минут. Сначала найдите компонент в дереве Components, затем измените свойство в Properties. Проверяйте результат на телефоне: Viewer в браузере не заменяет проверку реального размера экрана.

Что исправляем Что выбрать и настроить Что проверить
Кнопки столбиком разной ширины Общий VerticalArrangement: Width → Fill parent; обе кнопки: Width → Fill parent Левые и правые края совпадают
Кнопки «Назад» и «Отправить» в одном ряду Общий HorizontalArrangement на всю ширину; согласованные ширины кнопок, например по 48% Кнопки умещаются вместе; место между ними учитывается
Длинная надпись обрезана Увеличить доступную ширину; убрать слишком маленькую фиксированную высоту, начать с Height → Automatic Все слова видны; при переносе хватает высоты
Текст внутри кнопки расположен неудачно Свойство кнопки TextAlignment; для текста кнопки обычно выбрать центр Текст расположен внутри кнопки как задумано
Элементы группы прижаты к неправильному краю AlignHorizontal / AlignVertical у контейнера Меняется расположение дочерних элементов, а не только текста
Поле не имеет понятной подписи Отдельный Label над TextBox; пример в Hint После ввода слова назначение поля по-прежнему понятно
Длинная форма не помещается Scrollable у экрана формы; достаточная высота многострочного поля Можно добраться до нижних элементов на телефоне

Как выбрать контейнер и исправить размеры кнопок

Это учебная схема, не снимок редактора. Fill parent означает «заполнить родительский контейнер»: узкий контейнер даст узкую кнопку. Поэтому проверяем сначала родителя. В русском интерфейсе ориентируйтесь также на смысл свойства: ширина, высота, выравнивание.

Для кнопок рядом не задавайте обеим ширину 100%: каждая запросит всю ширину строки. Число 48% — отправная точка для проверки на телефоне, а не новое требование ко всем макетам. Сохраняйте компоновку своего варианта. Не уменьшайте шрифт настолько, что надпись становится трудно прочитать.

Карта пяти переходов

Пять обработчиков и два пути возврата из формы

Стрелки показывают действия пользователя в приложении. У формы один обработчик «Назад», но два возможных места возврата: это зависит от того, откуда её открыли.

№ Где находится кнопка Действие Блок
1 Главная: открыть каталог Открыть второй экран open another screen
2 Главная: открыть форму Открыть третий экран open another screen
3 Каталог: открыть форму Открыть третий экран open another screen
4 Каталог: на главную Закрыть каталог close screen
5 Форма: назад Закрыть форму, вернуться к предыдущему экрану close screen

На главной два обработчика, в каталоге два, в форме один. Кнопка «Отправить» пока остаётся визуальным элементом. Ввод слов в TextBox работает средствами самого компонента и не требует обработчика отправки.

Куда нажимать в редакторе

Ниже разобран вариант 01 на реальном проекте Variant01Demo, открытом в MIT App Inventor. JPEG-изображения — снимки редактора от 16 октября 2026 года; SVG выше — учебные схемы. Откройте свой лист и сопоставьте имена перед сборкой блоков. Если нужные экраны уже созданы, повторно добавлять их не надо.

Порядок действий: экран, Blocks, кнопка, Click, Control и имя экрана

Схема показывает последовательность действий, а не точное положение панелей в конкретной версии интерфейса. Редактор выбирает экран для редактирования; на телефоне переход выполняется только после нажатия запрограммированной кнопки.

Первый переход: с главной в каталог

Шаг 1. Выберите экран и кнопку. В списке экранов сверху выберите Screen1, затем нажмите Blocks / Блоки. Слева найдите ButtonRoutes и нажмите её имя. Для другой кнопки открывается такой же набор, но с её собственным именем.

Выбор события Click в наборе блоков кнопки

На этом снимке открыт набор кнопки возврата ButtonBookingBack. Нужный блок — самый верхний, when … .Click do. Для перехода в каталог откройте таким же способом ButtonRoutes. Не выбирайте LongClick, TouchDown или зелёные блоки свойств.

Шаг 2. Возьмите событие. Перетащите when ButtonRoutes.Click do в белую рабочую область справа. Внутрь его пустой области do будем вставлять действие.

Шаг 3. Найдите действие в Control. Слева нажмите Built-in → Control / Встроенные → Управление и прокрутите открывшийся набор вниз до команд работы с экранами.

Где находятся open another screen и close screen в Control

Для открытия нужен open another screen — первая команда открытия на снимке. Для возврата — отдельный короткий close screen. Команды open another screen with start value, close screen with value и close application здесь не используем.

Перетащите open another screen внутрь do. Блок должен присоединиться к событию. Блок, оставленный рядом на белом поле, после нажатия кнопки не выполнится.

Шаг 4. Задайте экран назначения. В гнезде screenName должно стоять RoutesScreen. В открытом редакторе блок из Control уже предлагается с розовым блоком выбора имени экрана: раскройте список и выберите нужное имя. Значение по умолчанию на снимке — BookingScreen, его нужно заменить на RoutesScreen для кнопки каталога.

Если гнездо пустое, используйте Text → пустую строку — самый верхний розовый блок в следующем наборе. Присоедините его к screenName, нажмите белое поле между кавычками, введите RoutesScreen и подтвердите Enter. Именно такой способ использован в готовом образце на следующем снимке.

Пустая строка в начале набора Text

Шаг 5. Сравните собранные блоки. На Screen1 должно получиться два обработчика: первый открывает каталог, второй — форму. Добавьте второй таким же способом для ButtonBooking, подставив BookingScreen.

Настоящие блоки Screen1: открытие каталога и формы

Верхний обработчик: ButtonRoutes.Click → RoutesScreen. Нижний: ButtonBooking.Click → BookingScreen. Розовые блоки соединены с входами screenName, золотые команды открытия вложены в do.

Шаг 6. Проверьте на телефоне. Нажмите «Посмотреть маршруты». Должен открыться каталог. Переключение экранов в верхнем списке редактора выбирает место редактирования; оно не доказывает работу перехода в приложении.

Второй и третий переходы: открыть форму

На Screen1 добавьте событие кнопки формы: в варианте 01 ButtonBooking.Click. Внутри разместите open another screen с именем BookingScreen.

Затем в списке экранов редактора выберите RoutesScreen, снова откройте Blocks и найдите кнопку ButtonRoutesBooking. Для её события Click задайте открытие BookingScreen. Блоки каждого экрана редактируются отдельно. Событие кнопки каталога не ищут в наборе компонентов Screen1.

Настоящие блоки каталога: открытие формы и возврат на главную

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

Четвёртый и пятый переходы: вернуться

На RoutesScreen выберите ButtonRoutesBack, добавьте Click, внутри разместите Control → close screen. На BookingScreen сделайте то же для ButtonBookingBack.

Настоящий обработчик возврата с BookingScreen

Весь код возврата формы: when ButtonBookingBack.Click do и вложенный close screen. У блока закрытия нет входа для имени экрана. Не добавляйте к нему строку Screen1.

Для возврата не открывайте новый Screen1. Представьте стопку карточек: открытие кладёт новую сверху, закрытие снимает верхнюю. Если форма открыта из каталога, под ней каталог. Если с главной — главная. Поэтому один close screen решает обе задачи. Сам Screen1 в этой работе не закрываем.

Проверка ввода в форму

Label показывает текст, TextBox позволяет его вводить. Поле должно быть доступно: Enabled: true. Для обычных слов используйте NumbersOnly: false и ReadOnly: false; для количества участников числовое ограничение допустимо по смыслу варианта. Hint — подсказка пустого поля, а не введённое значение.

Настройки TextBoxRoute: Enabled включено, NumbersOnly и ReadOnly выключены

Настройки настоящего TextBoxRoute: Enabled включено; NumbersOnly и ReadOnly выключены. Снимок свойств подтверждает настройку поля; проверку набора текста выполняем отдельно на телефоне.

На телефоне коснитесь текстового поля, дождитесь клавиатуры и наберите, например, «Проба». Удалите последнюю букву и допишите «Проба ввода». Слово должно появляться внутри поля, а не вместо его отдельной подписи. В поле пожеланий введите несколько слов; если оно многострочное, проверьте перенос. Вводите учебные данные без персональных сведений.

Если клавиатура закрывает низ формы, сначала проверьте прокрутку; для доступа к кнопкам клавиатуру можно скрыть. Не путайте системную кнопку скрытия клавиатуры с кнопкой «Назад» в самой форме. В приёмке переход проверяем именно кнопкой приложения.

Сохранение текста после закрытия и повторного открытия формы не является требованием этой работы. Проверяем набор и редактирование, пока форма открыта.

Вопросы перед практикой

  1. Почему кнопка с надписью «Каталог» может ничего не делать?
  2. На каком экране редактора искать событие кнопки возврата из формы?
  3. Что поставить в screenName: заголовок экрана или его внутреннее имя?
  4. Почему после формы можно вернуться в два разных места одним блоком?
  5. Чем выравнивание контейнера отличается от выравнивания текста кнопки?
  6. Как на телефоне доказать, что поле допускает ввод и исправление слов?

Продолжение: практика — завершение и показ на телефоне.