Putextra android studio kotlin

Полный список

— передаем данные с помощью 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 для обсуждения проблем производительности и для ваших пожеланий по содержанию курса по этой теме

Источник

Передача данных между Activity

Intent

Intent – это объект представляющий намерение приложения что-то сделать. Вы можете использовать намерения для самых разных задач, но на этом уроке ваше намерение запускает другое Activity. С помощью Intent мы можем не только запускать другое Activity но и передавать данные на это Activity.

Читайте также:  Psp emulator android все версии

Для запуска нового Activity нам нужно создать Intent используя конструктор Intent который принимает два значения.

  1. Context это первый параметр так как Activity это подкласс класса Context.
  2. Класс в который хотим передать Intent. В нашем случае это Activity которое хотим запустить.

putExtra это метод с помощью которого мы можем вложить в Intent данные для передачи. Метод putExtra принимает два значения:

  1. Ключ по которому мы будем получать переданное значение на другом Activity. Ключ это любое значение типа String
  2. Значение это любой тип данных таких как , Boolean, String, Int, Float, Double, Char и.т.д

Возврат результата на первое Activity

Когда мы запускаем новое Activity мы можем ждать какого либо результата из второго Activity. Для того чтобы получить результат из второго Activity нам нужно запускать второе Activity с помощью startActivityForResult. Таким образом наше первое Activity будет ждать результата из второго Activity. Как только второе Activity будет закрыто и мы вернемся на наше первое Activity если мы запустили второе Activity с помощью startActivityForResult, на первом Activity запуститься метод onActivityResult в котором мы можем принять ответ или какой либо результат из второго Activity. Для этого нам нужно добавить в наше первое Activity метод onActivityResult. Для того чтобы отправить из второго Activity ответ на первое Activity перед запуском команды finish() нам нужно написать команду setResult(RESUL_OK, intent). Intent мы можем создать сами:

или воспользоваться тем который получили с первого Activity просто написав слово intent. Это будет выглядеть вот так:

message это сообщение которое хотим передать на первое Activity и key это ключевое слово по которому хотим получить результат.

Когда мы запускаем второе Activity с помощью startActivityForResult нам нужно передать два значения в данный метод.

  1. Intent который хотим передать
  2. requestCode это любое целое число которое будет как id нашего Intent. Он нужен для того чтобы когда мы получим ответ из второго Activity мы знали от какого Activity пришёл ответ, так как мы можем запустить разные Activity и нам нужно знать какое Activity отправило результат. Это requestCode мы будем сверять в методе onActivityResult

вот простой пример запуска второго Activity и ожидание результата:

Источник

Android Intent Handling Between Activities Using Kotlin

Android Tutorial

Kotlin Tutorial

In this tutorial, we’ll be discussing Android Intents and implement them using Kotlin in our application.

  • What are Intents?
  • Types Of Intents?
  • Using Intents Between Activities
  • Sending Data Using Android Intents
  • Using Parcelable and Serializable to pass objects
  • Creating shorthand intents

Android Intents

As the name says Intent is something that’s used to perform some action with respect to the flow of the android application. Intents can be used to:

  • Starting a new activity and passing some data.
  • Starting Fragments/Communicating between fragments.
  • Start/End service.
  • Launch activities from a broadcast receiver

In this tutorial, we’ll be looking mainly at intents to handle activities.

An intent definition mainly consists of an instance of the current activity. We set the component name which can be:
The fully qualified class name of the activity to be called. This type of Intent is an explicit intent.
An action such as URL, phone number, location. It’ll display all the available applications of those types.
This falls under the implicit intent category.

In Kotlin, following is the way to create an activity.

startActivity would add OtherActivity on the activity stack and launch it.
How does our Application, realise which activity is the first to be invoked?
In the AndroidManifest.xml we set the intent filter with the action android.intent.action.MAIN and category android.intent.category.LAUNCHER on the first activity to be launched when our application opens.

Читайте также:  Cursed treasure 2 для андроид

finish() is used to destroy an activity and remove it from the stack.

Intent Flags

Flags are like options that can be set on intents to customise the launch process.
If you start the same activity everytime, a new instance would be created and added onto the activity stack
To prevent this, you can use the flags:
FLAG_ACTIVITY_SINGLE_TOP – If set, the activity will not be launched if it is already running at the top of the activity stack.

Similarly using a flag FLAT_ACTIVITY_CLEAR_TOP would not launch another instance of the activity if it already exists. This flag would clear all the activities above the activity that’s called and set it on the top of the stack.

Passing Data Through Intents

To pass data onto the new activities we use key value pairs inside the function putExtra , putStringArrayListExtra etc.
putExtra generally passes the basic types such as Int, Float, Char, Double, Boolean, String along with IntArray…. etc.

These Extras fields are under the hood wrapped into the Bundle object which ultimately holds all the data to be passed.

To retrieve the data in the other activity, we need to use the extras property over the bundles .

Retrieving Data in the new Activity

intent , extras are equivalent to getIntent() , getExtras() in Java.
We’ve used a nullable type Bundle? to prevent NullPointerExceptions when not data exists. Similarly, for the data that’s fetched using the keys, we’ve used the nullable types to prevent NPE that can occur when the key is incorrect.

Using Parcelable and Serializable Data

Sometimes we need to pass a complete object from one activity to another. It’s not possible to do so unless we implement the Parcelable or Serializable interface.

Difference between Parcelable and Serializable

  • Parcelable interface is a part of the Android SDK. Serializable is a standard interface of Java.
  • In Parcelable you need to set all of the data you need to pass in a Parcel object and also override the writeToParcel() methods etc. In serializable implementing the interface is sufficient to pass the data.
  • Parcelable is faster than Serializable.

Sending Parcelable Data

Kotlin comes up with some handy annotations to save us from overriding the writeToParcel() method to set the data on the Parcelable. Instead, we can use @Parcelize annotation as shown below:

Note: Currently in your build.gradle you must add the following code for the @Parcelize annotation to work:

In your Activity you do:

Sending Serializable Data

Let’s use over above knowledge in our Android Studio Project.

Project Structure

Layout Code

The code for the activity_main.xml layout is given below:

The code for the activity_other.xml layout is given below:

Activity Code

The code for the MainActivity.kt class is given below:

In the above code, we’ve used Buttons for each type of Intent.
We’ve used Kotlin’s with expression to prevent setting data over the intent object every time.
Besides, we’ve created three different intents apart from the ones already discussed above.
A browser intent is used to launch the url present in the intent in the browser app.
It uses Intent(Intent.ACTION_VIEW, uri) .
A location intent is used to launch the lat,lng location in the maps application.
Both of these are implicit intents.
Lastly, we’ve used a generic intent in which we use the Kotlin’s extension functions and lambda expressions to create a shorthand function to launch an intent.
For this we use the following functions:

startActivity is an exension function which looks for a higher order function as it’s parameter.
Thanks to this, we can now launch intents in as few lines as:
start

The code for the OtherActivity.kt class is given below.

Читайте также:  Blank app android что это

We’ve used let and apply to handle nullable types and prevent doing bundle.field in every line.

The output of the above application in action is given below:

This brings an end to this tutorial on Android intents in Kotlin. You can download the project from the link below.

Источник

Урок 5. Kotlin. Добавление второго экрана в android-приложение. Передача данных через Intent

Продолжаем курс по обучению основам разработки мобильных приложений в Android Studio на языке Kotlin.

В этом уроке создадим второй экран в приложении, и настроим взаимодействие между экранами с передачей данных.

Предыдущий урок, в котором мы обрабатывали нажатия кнопок, здесь

Продолжаем разработку приложения на языке Kotlin, которое мы делали на прошлом уроке. Исходный код можно скачать на странице прошлого урока.
Пока что наше приложение имеет только один экран. В этом уроке мы добавим второе активити, которое будет отображать экран с данными, полученными на основе данных с первого экрана. При нажатии кнопки Random будет отображаться окно со случайным числом от нуля до текущего значения счетчика.

Вы узнаете

  • Как запустить новое активити с помощью интента
  • Как передать данные во второе активити через интент
  • Как получить данные, переданные через интент во втором активити

Создаем новое активити

  1. Раскройте пакет с именем com.example.android.myfirstapp по пути apps >java >com.example.android.myfirstapp.
  2. Правым кликом выберите команду File >New >Activity >Empty Activity.
  3. В окне настроек нового активити установите для него имя SecondActivity. Убедитесь, что в поле Source Language установлен Kotlin.

Также проверьте им пакета, оно должно соответствовать вашему приложению. Если вы не выделили имя пакета в меню при вызове команды добавления нового активити, установите в это поле android.example.com.myfirstapp.

4. Нажмите Finish. Android Studio создаст файл на языке Kotlin и файл макета на языке XML для нового активити.

5. Дождитесь синхронизации gradle в Android Studio.Gradle это система сборки, которая используется в Android Studio для компиляции и постройки приложения. Вы будете видеть сообщения от gradle о прогрессе сборки приложения внизу экрана.

Изучите файл манифеста

Каждое активити должно быть определено в файле манифеста. Вы можете добавить новое активити в приложение не через меню добавления активити, но тогда вам нужно будет вручную прописать его в манифесте.

Изучите файл Kotlin нового активити

  1. Откройте файл SecondActivity.kt.
  2. Обратите внимание на метод onCreate(). Постмотрите на вызов setContentView(). Этот метод указывает файл макета activity_second.xml как разметку нового активити.

В этом активити мы добавим метод отображения случайного числа. Но сначала нам нужно определить поле в макете для его отображения.

Создаем макет для нового активити

Экран нового активити будет отображать заголовок и случайный номер. На вкладке дизайн редактора макетов можно увидеть, как будет выглядеть экран:


Добавьте TextView для заголовка

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

Это код XML для TextView, которое отображает заголовок:

Источник

Оцените статью