Android studio fragment intent

Android App Components — Activities, Fragments and Intents

Hello everyone, Welcome back to Android Hunger. Here I am going to tell you about some of the main Android App Components like Activities, Fragments, and Intents.

Activities :

  • Activity is one of the most important component for any android app.
  • Activities are the User Interface (UI) screens which user see.
  • It is similar to the main() function in different programming languages.
  • Its is the main entry point for user interaction.
  • You can have multiple activities in your app.
  • All your activities must be declared in the manifest file, with their attributes.

Every activity has different functions throughout its life, onCreate(), onStart(), onResume(), onPause(), onStop(), onRestart(), onDestroy().

Below is the image from android’s documentation, which clearly shows the lifecycle of an android activity.

Fragments :

In most of the applications these days, fragments are largely used.

As there are a lot of android devices with different resolutions, its a bit tough to handle all of those, that’s where fragments come handy. We can combine 2 or more fragments and show them in an activity.

A Fragment is a component that is used by an activity.

Even though it is used by an activity, it has its own lifecycle.

There are also some different fragments which you can extend: DialogFragment, ListFragment, PreferenceFragment.

Intents :

Intent is one of the most important and most used app component of an android application.

Using Intents, you call to other app components or to other activity or also call other applications on your phone.

Intents are two types:
Explicit Intents where you call another activity or something with a class name. For instance, you can call another activity when some action happened in one activity. So you here explicitly specifies which activity to call.

Implicit Intents where we do not specify a class name but specify some sort of action, which can be handled by some other inbuilt apps or some other apps. For instance, you may want to open a camera, showing a map, sending emails etc. Here you don’t directly call camera app or map app, you will just specify the action.

Example

Below is a simple application which has one button in one activity and when clicked to goes to other activity using intent and in the other activity, two fragments are shown.

Here we have only one button,

In MainActivity I just initialize the button and set a click listener to it to call SecondActivity, this moving from one activity to another activity here is done using an Intent.

Читайте также:  Отключить навигацию кнопок андроид

startActivity(new Intent(MainActivity.this, SecondActivity.class));

top_fragment.xml and bottom_fragment.xml

I want to show two fragments in the second activity, so I need to create two layouts for the fragments, pretty simple layouts with a text view in each layout.

TopFragment.java and BottomFragment.java

For the fragments, they need a class, so I created a class which extends Fragment class and simply set its content to the layout files I just created above.

In the second activity I just wanted to show two fragments which I just created above, so in its layout file, I will add the two fragments.

Источник

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

— передаем данные с помощью 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.

Читайте также:  Android info txt file

На следующем уроке:

— вызываем Activity с возвратом результата

Присоединяйтесь к нам в Telegram:

— в канале StartAndroid публикуются ссылки на новые статьи с сайта startandroid.ru и интересные материалы с хабра, medium.com и т.п.

— в чатах решаем возникающие вопросы и проблемы по различным темам: Android, Kotlin, RxJava, Dagger, Тестирование

— ну и если просто хочется поговорить с коллегами по разработке, то есть чат Флудильня

— новый чат Performance для обсуждения проблем производительности и для ваших пожеланий по содержанию курса по этой теме

Источник

Запуск другой Activity — второго окна android-приложения

В этом уроке

Вы также должны прочитать

После завершения предыдущего урока, у вас есть приложение, которое показывает активити (один экран) с текстовым полем и кнопкой. В этом уроке вы добавим код к MainActivity , который запустит новую активити , когда пользователь нажмет на кнопку Отправить..

Ответить на кнопку Отправить

Чтобы ответить на событие нажатия кнопки, откройте fragment_main.xml файла макета и добавьте android:onClick атрибут к элементу:

android:onClick значение атрибута, «sendMessage» , это имя метода в вашей активити , который система вызывает когда пользователь нажимает кнопку.

Откройте MainActivity класс (расположенный в каталоге проекта src/ ) и добавьте соответствующий метод:

Чтобы система смогла найти этот метод с именем, заданным в android:onClick , сигнатура должна быть именно такой, как вы видели. В частности, метод должен:

  • Быть public
  • Имейте void в качестве возвращаемого значения
  • Иметь View в качестве единственного параметра (это будет View , на котором нажали)

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

Создать Intent

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

Внутри sendMessage() метода, создайте Intent для запуска активити под названием DisplayMessageActivity :

Для этого требуется импортировать Intent класс:

Полезный совет: В Eclipse, нажмите Ctrl + Shift + O для импортирования недостающих классов (Cmd + Shift + O на Mac). В Android Studio команда для импорта Alt+Enter.

Конструктор, используемый здесь принимает два параметра:

  • Context в качестве первого параметра( this используется, поскольку Activity класс является подклассом Context )
  • Class компонента приложения, в который система должна доставить Intent (в данном случае активность, которая должна быть запущена)

Отправка intent в другие приложения

Intent, созданный в этом уроке считается явным, поскольку Intent указывает точный компонент приложения, в которое интент следует отправить. Тем не менее, интенты также могут быть неявными, в этом случае Intent не указывает нужный компонент, позволяя любой программе установленной ​​на устройстве отвечать на интенты, пока она удовлетворяет спецификациям мета-данных действия, задаваемыми в различных Intent параметрах. Для получения дополнительной информации читайте курс Взаимодействие с другими приложениями.

Примечание: Ссылка на DisplayMessageActivity вызовет ошибку, если вы используете интегрированную среду разработки, такую как Eclipse например, потому что класс еще не существует. Игнорируйте ошибку на данный момент; вы скоро создадите класс.

Читайте также:  Клавиатура для андроид как windows

Intent не только позволяет начать другую Activity, но также может выполнять связь данных в Activity. В sendMessage() методе, используйте findViewById() для получения EditText элемента и добавьте его текстовое значение в Intent:

Примечание: Вам необходим оператор импорта для android.widget.EditText . Вы определите EXTRA_MESSAGE константу буквально сейчас.

Intent может нести коллекцию различных типов данных в виде пары ключ-значение, называемых Extras. Метод putExtra() принимает имя ключа в первом параметре и значение во втором параметре.

Для того, чтобы Activity смогла запросить дополнительные данные, вы должны определить ключ для дополнений вашего интента, используя общедоступную константу. Так что добавьте EXTRA_MESSAGE определение в начало MainActivity класса:

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

Запуск второй Activity

Для запуска активити, вызовите startActivity() и передайте в него ваш Intent . Система получает этот вызов и запускает экземпляр Activity указанный в Intent .

С помощью этого нового кода, полный sendMessage() метод, который вызывается кнопкой Отправить теперь выглядит следующим образом:

Теперь вам нужно создать DisplayMessageActivity класс для того, чтобы это работало.

Создание второй Activity

Для создания новой Activity в Android Studio:

В главном меню выберите File>New>Activity>Blank Activity.

Заполните поля в окне мастера создания активити:

  • Activity Name: DisplayMessageActivity
  • Layout Name: activity_display_message
  • Title: Моё сообщение
  • Hierarchial Parent: com.example.myfirstapp.MainActivity

Остальные поля оставьте по умолчанию. Нажмите Finish.

Для создания новой Activity в Eclipse:

  • Нажмите Newна панели инструментов.
  • В появившемся окне, откройте Android папку и выберите Android Activity. Нажмите Next.
  • Выберите BlankActivity и нажмите Next.
  • Заполните информацию о Activity:
    • Project: MyFirstApp
    • Activity Name: DisplayMessageActivity
    • Layout Name: activity_display_message
    • Fragment Layout Name: fragment_display_message
    • Title: Моё сообщение
    • Hierarchial Parent: com.example.myfirstapp.MainActivity
    • Navigation Type: None

    Нажмите Finish.

Рисунок 1. Мастер новой активити в Eclipse.

Если вы используете инструменты командной строки, создайте новый файл с именем DisplayMessageActivity.java в проекте в src/ каталоге, рядом с оригиналом MainActivity.java файлом.

Откройте DisplayMessageActivity.java файл. Если вы использовали Android Studio или Eclipse для создания этой Activity:

  • Класс уже включает в себя реализацию требуемого onCreate() метода. Вы обновите реализацию этого метода позже.
  • Есть также реализация onCreateOptionsMenu() метода, но вам это не будет нужно в данном приложении, так что вы можете удалить его.
  • Есть также реализация onOptionsItemSelected() , который обрабатывает поведение панели действий для кнопки Вверх . Оставьте его как есть.
  • Может быть также PlaceholderFragment класс, который расширяет Fragment . Вам не нужен будет этот класс в окончательном варианте этой активити .

Фрагменты разбивают функциональность приложений и пользовательский интерфейс на модули, которые можно будет повторно использовать. Для более подробной информации о фрагментах см.Руководство по Фрагментам. Окончательный вариант этой активити не использует фрагменты.

Примечание: Ваша активити может выглядеть иначе, если вы не использовали последнюю версию ADT плагина. Убедитесь, что вы установили последнюю версию ADT плагина для завершения этого курса.

DisplayMessageActivity класс должен выглядеть следующим образом:

Источник

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