Для начала определимся с тем, где и как будет создаваться интерфейс и программная логика будущих приложений. Интерфейс можно создавать визуально в дизайнере App Inventor (AI) или невизуально путём кодирования. Программную логику также можно реализовать визуально в редакторе блоков AI или в коде. Если в качестве IDE выбрать Android Studio (AS), то станут возможны следующие варианты:
Первый вариант можно использовать для создания набросков и изучения работы Java-моста. Для работы над реальными проектами он не годится по следующим причинам:
Проще говоря, чем меньше используется генератор Java-кода, тем меньше странностей и сюрпризов будет в последнем.
Интерфейсную часть приложения можно создавать:
Каждый из этих подходов имеет преимущества, но последний вариант в некоторых случаях позволяет заметно упростить и повысить эффективность работы, как будет вскоре показано.
Рассмотрим базовый пример.
Общая последовательность действий выглядит так:
Ключевое слово this в коде является указателем на объект экрана - Screen1 в нашем случае. Названия методов совпадают с названиями полей на панели свойств в дизайнере и названиями свойств в блоках. Например, если в блоке указано свойство BackgroundColor, то и название метода для изменения данного свойства будет BackgroundColor().
В показанном примере интерфейс состоит из двух кнопок и работа с кодом, отвечающая за его создание, не вызывает сложностей.
Предположим, нам необходимо заполнять в приложении 4 текстовых поля для последующей отправки содержащейся в них информации в базу данных или по электронной почте. При использовании AI Java Bridge сгенерированный код будет содержать большой объём дублированного кода, выглядящего так:
Объявление поясняющей надписи 1 для текстового поля 1
Объявление поясняющей надписи 2 для текстового поля 2
Объявление поясняющей надписи 3 для текстового поля 3
Объявление поясняющей надписи 4 для текстового поля 4
Объявление текстового поля 1
Объявление текстового поля 2
Объявление текстового поля 3
Объявление текстового поля 4
Создание поясняющей надписи 1 для текстового поля 1
Создание поясняющей надписи 2 для текстового поля 2
Создание поясняющей надписи 3 для текстового поля 3
Создание поясняющей надписи 4 для текстового поля 4
Создание текстового поля 1
Создание текстового поля 2
Создание текстового поля 3
Создание текстового поля 4
Задание свойства для поясняющей записи 1
Задание свойства для поясняющей записи 2
Задание свойства для поясняющей записи 3
Задание свойства для поясняющей записи 4
Задание свойства текстового поля 1
Задание свойства текстового поля 2
Задание свойства текстового поля 3
Задание свойства текстового поля 4
Создать список объектов
Создать функцию для очистки всех текстовых полей.
Работать с таким кодом затруднительно, так как любое изменение (добавление/удаление виджетов, выравнивающих контейнеров, свойств и др.) будет требовать просто огромного объёма ручной работы и операций копирования/вставки, чего можно избежать путём программной генерации данного кода. Для этого создадим список имён полей, который затем будет использован для создания всех необходимых виджетов в цикле.
Предположим, мы захотели выделить названия полей жирным начертанием. Для этого нужно добавить в цикл всего одну строку:
title.FontBold(true);
Если требуется создать обработчики событий для создаваемых программно виджетов, то для этого можно воспользоваться хеш-таблицей пар ключ-значение интерфейса HashMap. Ключами в этом списке нужно сделать строковые представления виджетов (при помощи метода toString()), а значениями - строки, связанные с требуемыми действиями.
Из показанных примеров видно, что текстовое программирование позволяет выйти за рамки ограничений среды визуальной разработки App Inventor.