- Android studio передать переменную между активити
- Полный список
- Урок 15. Передача данных между экранами — пунктами назначения. Android Navigation. Bundle vs Safe Args
- На этом уроке
- Передача данных между экранами
- Bundle или Safe Args?
- Создаем проект
- Создаем граф навигации
- Добавляем пункты назначения – фрагменты
- Урок 5. Kotlin. Добавление второго экрана в android-приложение. Передача данных через Intent
- Вы узнаете
- Создаем новое активити
- Изучите файл манифеста
- Создаем макет для нового активити
- Добавьте TextView для заголовка
Android studio передать переменную между активити
Мы уже работали над созданием перехода между двумя Activity. Сегодняшний урок довольно похож, но имеет некоторое усложнение — мы будем не просто переходить с одного Activity на другое, но и передавать между ними текстовые данные.
Суть приложения будет в том, что в одном окне будет две формы EditView для заполнения текстом и кнопка Button перехода на другое окно, а в другом — два элемента TextView, которые будут отображать текст, который был введен в EditView в первой Activity и кнопка возвращения назад.
Создаем новый проект с Blank Activity, все названия я оставлю по умолчанию.
Для начала настроим интерфейс первого Activity. Открываем файл activity_main.xml. Мы добавим сюда 2 элемента EditText для ввода текста и кнопку Button:
Все, внешний вид первого Activity готов:
Теперь нам нужно создать новый Activity. В папке Java/имя_вашего_приложения нашего приложения создаем новый Java Class. Клик правой кнопкой мышки по указанной папке New — Java Class:
Зададим ему имя Second. Проследите, чтобы созданный класс Second.java находился в одной папке с MainActivity.java :
Для этого класса нужно создать соответствующий layout — файл, который будет отвечать за его внешний вид (интерфейс). В папке res/layout создаем (правый клик по папке layout — New — Layout resourse file) файл по имени second.
Сразу настроим внешний вид второго Activity. Открываем файл созданный second.xml и добавляем 2 элемента TextView и кнопку Button:
Внешне это выглядит так:
В файле activity_main.xml мы создавали кнопку «Передать» и создали для нее метод нажатия (подчеркнуто):
Чтобы описать процесс нажатия, нужно добавить метод обработки нажатия в MainActivity.java. Для этого ставим курсор на слово «Send» в коде кнопки и жмем комбинацию Alt+Enter и выбираем первую строку Create ‘Send(View)’ in ‘MainActivity’.
Переходим к редактированию файла MainActivity.java . Объявляем используемые переменные, привязываем их к созданным элементам интерфейса, с оздаем с помощью класса Intent переход на Second.java, а также настраиваем получение текстовых данных с элементов EditText для передачи в Second.java :
Создадим метод для обработки нажатия кнопки «Назад» в файле second.xml. Делаем все аналогично кнопке «Передать» (курсор на «Back» — Alt+Enter — Enter):
Теперь переходим к редактированию файла Second.java. Для начала нужно привязать его к second.xml интерфейсу:
Теперь объявляем объекты, привязываем их к созданным в файле разметки интерфейса, настраиваем строковые ресурсы с полученных с первого Activity данных и выводим на экран, а также для обработчика нажатия клавиши пишем код перехода обратно:
Остается только объявить о созданном Second.java в файле манифеста. Открываем AndroidManifest.xml и добавим туда между тегами :
Вот и все, приложение готово, можно переходить к тестированию.
Источник
Полный список
— передаем данные с помощью Intent
На прошлых уроках мы узнали, что такое Intent и как им пользоваться. Из одного Activity мы просто вызывали другое, передавая action. Теперь научимся передавать данные. Сделаем простейшее приложение. На первом экране мы будем вводить наше имя и фамилию, а второй экран будет эти данные отображать. Передавать данные будем внутри Intent.
Создадим проект:
Project name: P0281_IntentExtras
Build Target: Android 2.3.3
Application name: IntentExtras
Package name: ru.startandroid.develop.p0281intentextras
Create Activity: MainActivity
Открываем main.xml и рисуем экран с полями и кнопкой отправки:
В EditText будем вводить имя и фамилию, а кнопка Submit будет вызывать другой экран и передавать ему эти данные.
Пишем код для MainActivity.java:
Определяем поля ввода и кнопку. Кнопке присваиваем обработчик – Activity (this). Рассмотрим реализацию метода onClick. Мы создаем Intent с использованием класса, а не action. Если помните, с такого способа мы начинали знакомство с Intent. Напомню — это означает, что система просмотрит манифест файл нашего приложения, и если найдет Activity с таким классом – отобразит его. ViewActivity пока не создан, поэтому код будет подчеркнут красным. Это не мешает нам сохранить файл. Чуть позже мы создадим это Activity и ошибка исчезнет.
Итак, Intent создан, смотрим код дальше. Используется метод putExtra. Он имеет множество вариаций и аналогичен методу put для Map, т.е. добавляет к объекту пару. Первый параметр – это ключ(имя), второй — значение.
Мы поместили в Intent два объекта с именами: fname и lname. fname содержит значение поля etFName, lname – значение поля etLName. Остается только отправить укомплектованный Intent с помощью метода startActivity.
Теперь создадим второе Activity. Назовем его ViewActivity.
Создаем для него layout-файл view.xml:
Здесь просто TextView, который будет отображать пришедшие данные.
Создаем класс ViewActivity. И пишем код:
Находим TextView, затем получаем Intent и извлекаем из него String-объекты с именами fname и lname. Это те самые значения, которые мы помещали в коде MainActivity.java. Формируем строку вывода в TextView с использованием полученных данных.
Не забудьте прописать ViewActivity в манифесте. На этот раз никаких Intent Filter не нужно, т.к. мы точно знаем имя класса Activity и используем явный вызов.
Все сохраним и запустим.
Видим такой экран:
Заполняете поля как пожелаете. Я напишу John в поле First Name и Smith в поле Last Name.
ViewActivity отобразилось, считало данные из Intent и вывело их на экран.
Поместить в Intent можно данные не только типа String. В списке методов Intent можно посмотреть все многообразие типов, которые умеет принимать на вход метод putExtra.
На следующем уроке:
— вызываем Activity с возвратом результата
Присоединяйтесь к нам в Telegram:
— в канале StartAndroid публикуются ссылки на новые статьи с сайта startandroid.ru и интересные материалы с хабра, medium.com и т.п.
— в чатах решаем возникающие вопросы и проблемы по различным темам: Android, Kotlin, RxJava, Dagger, Тестирование
— ну и если просто хочется поговорить с коллегами по разработке, то есть чат Флудильня
— новый чат Performance для обсуждения проблем производительности и для ваших пожеланий по содержанию курса по этой теме
Источник
Урок 15. Передача данных между экранами — пунктами назначения. Android Navigation. Bundle vs Safe Args
Продолжаем серию уроков по разработке android-приложений в Android Studio на языке Kotlin.
На прошлом уроке мы выполняли навигацию по условию, авторизован пользователь или нет.
На этом уроке
На этом уроке рассмотрим возможности передачи данных между экранами – пунктами назначения навигации в андроид-приложении. Создадим приложение с двумя экранами. На первом экране будет поле для ввода имени и кнопка отправки, а на втором экране будет отображаться приветствие с именем, которое мы указали. Таким образом, мы передадим данные (имя) с первого экрана на второй.
Передача данных между экранами
В процессе работы приложения часто возникает необходимость передавать данные между экранами. В уроке №5 мы рассматривали возможность передачи данных между активити с помощью интента. Для передачи данных между фрагментами такой способ не подходит, поскольку часто фрагменты отображаются в одном и том же активити.
Bundle или Safe Args?
В этом уроке мы рассмотрим два способа передачи данных между фрагментами: традиционный – с помощью наборов данных Bundle и типобезопасный – при помощи безопасных аргументов SafeArgs. Первый способ относительно прост – создаем набор данных «ключ-значение» типа Bundle и передаем через action в первом фрагменте, и извлекаем во втором фрагменте.
Второй способ потребует немного больше кода. На первый взгляд он может показаться сложнее, поскольку используется кодогенерация – среда разработки создает необходимые классы вместо вас. Но мы попробуем разобраться и вы увидите, что ничего особо сложного там нет. По сути, SafeArgs – просто обертка над Bundle. Тем не менее, разработчики настоятельно рекомендуют применять именно SafeArgs, как типобезопасный способ передачи данных между фрагментами в процессе навигации.
Создаем проект
Откройте среду разработки Android Studio и создайте новый проект с использованием шаблона Empty Activity.
Создаем граф навигации
Далее перейдите в папку res и создайте в ней папку navigation. Внутри папки navigation создайте Navigation Resource File с именем nav_graph.xml и корневым элементом .
Если вы забыли добавить в проект необходимые для поддержки навигации библиотеки – Android Studio предложит это сделать за вас, показав предупреждение.
Добавляем пункты назначения – фрагменты
Добавьте новые пункты назначения. Для этого:
- В окне редактора дизайна нажмите кнопку «New destination»
- Выберите «Create new destination»
- Далее в окне добавления фрагмента выберите Fragment (Blank):
Источник
Урок 5. Kotlin. Добавление второго экрана в android-приложение. Передача данных через Intent
Продолжаем курс по обучению основам разработки мобильных приложений в Android Studio на языке Kotlin.
В этом уроке создадим второй экран в приложении, и настроим взаимодействие между экранами с передачей данных.
Предыдущий урок, в котором мы обрабатывали нажатия кнопок, здесь
Продолжаем разработку приложения на языке Kotlin, которое мы делали на прошлом уроке. Исходный код можно скачать на странице прошлого урока.
Пока что наше приложение имеет только один экран. В этом уроке мы добавим второе активити, которое будет отображать экран с данными, полученными на основе данных с первого экрана. При нажатии кнопки Random будет отображаться окно со случайным числом от нуля до текущего значения счетчика.
Вы узнаете
- Как запустить новое активити с помощью интента
- Как передать данные во второе активити через интент
- Как получить данные, переданные через интент во втором активити
Создаем новое активити
- Раскройте пакет с именем com.example.android.myfirstapp по пути apps >java >com.example.android.myfirstapp.
- Правым кликом выберите команду File >New >Activity >Empty Activity.
- В окне настроек нового активити установите для него имя SecondActivity. Убедитесь, что в поле Source Language установлен Kotlin.
Также проверьте им пакета, оно должно соответствовать вашему приложению. Если вы не выделили имя пакета в меню при вызове команды добавления нового активити, установите в это поле android.example.com.myfirstapp.
4. Нажмите Finish. Android Studio создаст файл на языке Kotlin и файл макета на языке XML для нового активити.
5. Дождитесь синхронизации gradle в Android Studio.Gradle это система сборки, которая используется в Android Studio для компиляции и постройки приложения. Вы будете видеть сообщения от gradle о прогрессе сборки приложения внизу экрана.
Изучите файл манифеста
Каждое активити должно быть определено в файле манифеста. Вы можете добавить новое активити в приложение не через меню добавления активити, но тогда вам нужно будет вручную прописать его в манифесте.
Изучите файл Kotlin нового активити
- Откройте файл SecondActivity.kt.
- Обратите внимание на метод onCreate(). Постмотрите на вызов setContentView(). Этот метод указывает файл макета activity_second.xml как разметку нового активити.
В этом активити мы добавим метод отображения случайного числа. Но сначала нам нужно определить поле в макете для его отображения.
Создаем макет для нового активити
Экран нового активити будет отображать заголовок и случайный номер. На вкладке дизайн редактора макетов можно увидеть, как будет выглядеть экран:

Добавьте TextView для заголовка
- Откройте файл activity_second.xml. Вы увидите пустой ConstraintLayout. Это макет по умолчанию для шаблона Empty Activity.
- Добавьте TextView из палитры компонентов. Этот TextView будет использовано для отображения заголовка вверху экрана.
- Ограничение верхнего края TextView установим по верхней границе окна, левый край по левой стороне, а правый край по правой стороне экрана. Нижний край не ограничиваем.
- Установите значение ширину match_parent, а высоту wrap_content, поэтому высота изменится в соответствии с высотой содержимого.
- Установите идентификатор @+id/textview_label.
- Установите верхний, левый и правый отступ 24dp. Левый и правый отступы могут также иметь значение «start» и «end» для поддержки локализации языков с написанием справа налево.
- Установите значение параметра цвета текста @color/colorPrimaryDark и размер текста 24sp.
- Поместите текст в TextView «Это случайное число между 0 и %1d.» Спецификатор %1dбудет заменен числом в процессе работы приложения.
- Поместите текст в ресурсы с именем random_heading.
Это код XML для TextView, которое отображает заголовок:
Источник