- Секреты Android: как быстро переключаться между последними приложениями
- Полезные функции Android, о которых вы можете не знать
- 1. Быстрое переключение между приложениями
- 2. Мультиоконный режим
- 3. Ускоренная анимация
- 4. Быстрая блокировка нежелательных номеров
- Как переключаться между Android-приложениями побыстрее?
- Жесты быстрого переключения приложений на Samsung Galaxy
- А как научится быстрому переключению между открытыми приложениями на смартфоне Samsung Galaxy?
- Инструкция по быстрому переходу между приложениями на смартфоне Samsung Galaxy.
- Первый способ быстрого перехода между приложениями с помощью жестов.
- Настройка режима:
- Жест «Перелистывание приложений»:
- Второй способ быстрого перехода между приложениями с помощью кнопки «Последние».
- Настройка режима:
- Перелистывание приложений двойным нажатием кнопки «Последние»:
- Android переключение между приложениями
- Когда удобнее переключаться между приложениями, а не открыать их через рабочий стол
- Открытие и закрытие Панель запуска
- Открытие приложения
- Переключение на недавно используемое приложение
- Простое переключение на другой экран
- Создаём третий экран — способ для ленивых
- Передача данных между активностями
- Кто подставил кота Ваську — получаем результат обратно
- Используем фильтры
- Запуск активности по его имени
Секреты Android: как быстро переключаться между последними приложениями
Google регулярно выдаёт апдейты фирменных сервисов. Например, только вчера мы узнали об апдейте Карт и Lens. Первая платформа получила улучшенное меню шэринга и более высокую скорость работы, тогда как вторая стала обладателем обновлённого интерфейса для более эффективного использования. Сотрудники поискового гиганта не забывают улучшать и операционную систему, причём не всегда рассказывают о небольших нововведениях. Об одном из них накануне напомнили журналисты.
Речь идёт о быстром переключении между приложениями, сообщает Phone Arena. Если быть точнее, особенность позволяет мгновенно перейти к последней открытой программе и при необходимости тут же вернуться обратно. Нововведение добавили ещё в Android Nougat, однако оно по-прежнему есть и в Android P. При этом из-за новой навигации жестами использование фишки на разных версиях системы отличается.
На устройствах под управлением Android Nougat и Oreo выполнить действие достаточно просто. Для этого дважды нажимаем по кнопке запущенных приложений. Система на долю секунды покажет открытые программы, после чего сразу же откроет последнюю.
С Android P немного сложнее. Владельцу смартфона нужно сделать полный свайп вправо от кнопки «Домой». А если к устройству вдруг подключена физическая клавиатура, достаточно использовать сочетание ALT + Tab. Совсем как на персональном компьютере.
Функция полезная и удобная — особенно в работе. Например, можно редактировать документ и при необходимости подглядывать в разные источники внутри браузера. Или смотреть список заметок и составлять расписание на ближайшее будущее.
Напомним, не так давно разработчики Google обновили Files и Keep. Файловый менеджер получил поддержку USB OTG и более полную структуру папок, тогда как вторая программа дарит дополнительное пространство для заметок от руки.
Знали ли вы о быстром переключении между программами? Делитесь ответами в Телеграм-чате AndroidInsider.
Источник
Полезные функции Android, о которых вы можете не знать
Android определенно является самой многофункциональной операционной системой. И совершенно неудивительно, что в Android содержится немало скрытых или просто неочевидных для пользователей функций. Очередная порция таких функций в этой статье!
1. Быстрое переключение между приложениями
Одна из самых полезных функций Android доступна в системе годами, но по-прежнему используется единицами. Речь идет о возможности быстрого переключения между запущенными приложениями. Прямо как Alt+Tab на компьютере.
Для того, чтобы быстро переключиться между открытыми приложениями достаточно дважды тапнуть кнопку «Меню» . После этого моментально произойдет переключение на предыдущее запущенное приложение. Крайне удобно!
2. Мультиоконный режим
На большинстве Android-смартфонов доступен специальный мультиоконный режим. В нем можно запускать два приложения на одном экране. Благодаря этому можно полноценно использовать два приложения, например, переписываться в соцсетях и параллельно смотреть стрим или видео.
Для активации мультиоконного режима необходимо удержать кнопку «Меню» в течение секунды. В результате этого Android предложит выбрать два приложения на выбор для открытия в мультиоконном режиме.
3. Ускоренная анимация
Любой Android-смартфон можно заметно ускорить путем ускорения всех анимаций интерфейса. В первую очередь, для этого требуется включить режим разработчика. Сделать это можно в меню « О телефоне ». Зайдите туда и семь раз коснитесь номера сборки . Эта необычная команда и включает меню разработчика в Android.
Затем вам останется перейти в новое меню настроек «Для разработчиков», выбрать раздел « Рисование » – « Анимация переходов » и установить параметр на 0.5x . Анимацию в интерфейсе можно отключить полностью, но из-за этого, наоборот, возникают некоторые притормаживания.
4. Быстрая блокировка нежелательных номеров
Для блокировки нежелательного номера в Android необязательно добавлять его в черный список или запрещать звонки в каком-либо стороннем приложении. Для этого достаточно зайти в параметры контакта в контактной книге и включить опцию « Только голосовая почта ». Включение этой функции запретит входящие звонки от этого абонента.
Источник
Как переключаться между Android-приложениями побыстрее?
В общем, если совсем уж надоело переключаться между Android-приложениями в смартфоне (или) планшете «дедовским способом», то, значит, пришло время стать чуть более продвинутым юзером.
В смысле пора немножко поразвиваться и вспомнить, что теперь опытные пользователи юзают не только обычные мобильные приложения, но и специальные приложения для управления другими приложениями.
В том числе и программки для ускоренного переключения между установленными на Android-девайсе прогами, притом некоторые из них позволяют забыть о постоянных хождениях на домашний экран и метаниях по центру уведомлений.
Прикольно? Да, и удобно тоже.
Гуглим Last App Switcher , или сразу лезем на Плeй Маркeт или GP. Главная фишка этого полезного софтика состоит в том, что на Android-е он работает точно также как кнопка «Последний просмотренный канал» (Last channel), т.е. позволяет оперативно переходить с одной на другую программу.
В описании сего нового программного продукта его создатели преимущества программулинки отметили очень творчески, но весьма иллюстративно. Как то так: представьте, что в тот момент, когда вы копаетесь в интернете, приходит какое-нибудь сообщение. Раньше как: надо свернуть браузер, открыть мессенджер, и только потом писать ответ. Затем вы традиционно тапаете кнопку Recent apps (последние запущенные приложения), ищете иконку браузера, жмете ее, чтобы опять вернуться в интернет. Хлопотно! И тут снова приходит сообщение! И все по-новой? С Last App Switcher проще: раз тапнул — пишешь ответ, еще раз — снова в интернете, снова тапнул — опять чатишся. А теперь попробуйте сосчитать, сколько минут таким от образом можно экономить ежедневно.
А ведь товарищи девелоперы правы. Тут и суперматематиком быть не обязательно.
В свежей версии LAS для Android, кстати, функционал еще расширили, добавив несколько опций, позволяющих переходить на предыдущее активное приложение простой комбинацией нажатия со свайпом вверх кнопки Home либо нажатием на ярлычок поиска. Где можно скачать Last App Switcher мы уже намекнули.
Источник
Жесты быстрого переключения приложений на Samsung Galaxy
Большинство владельцев смартфонов пришли в Мир мобильных устройств, имея уже достаточно богатый опыт пользования Персональным Компьютером (ПК). Поэтому многие «вещи» интерфейса смартфонов уже знакомы и понятны.
Но не все удобные функции компьютерного интерфейса перешли в Операционную Систему Android. Тем не менее, некоторые из самых полезных функций, нашли своё применение и в мобильных телефонах. Например, функция быстрого переключения между открытыми приложениями. Эта функция была реализована на ПК в виде сочетания клавиш «Alt-Tab». Многооконный интерфейс ОС Windows компьютеров позволяет работать сразу с несколькими запущенными программами. Зажав на клавиатуре компьютера клавишу «Alt» и нажимая на клавишу «Tab» можно очень легко переходить с одной программы на другую, которые открываются в виде эскизов в небольшом окне. Очень практично и удобно.
На смартфонах с ОС Android функция быстрого переключения приложений является одной из наименее известных и доступных для обнаружения.
А как научится быстрому переключению между открытыми приложениями на смартфоне Samsung Galaxy?
В Android-смартфонах стандартное переключение между открытыми приложениями осуществляется с помощью навигационной кнопки «Последние» (или «Обзор») в виде 3 вертикальных линий, которая расположена в самом низу экрана. Это происходит в 3 этапа:
1. Нажать на навигационную кнопку «Последние».
2. На экране появятся эскизы открытых приложений. Листая их свайпом вправо или влево, вы можете найти нужное приложение.
3. Чтобы активировать нужное приложение нужно нажать на эскиз приложения. Таким образом, вы переключитесь на него и откроете на весь экран смартфона. Теперь вы на месте.
Далее мы расскажем, как эти действия можно сделать с помощью одного простого жеста.
Здесь существует два варианта быстрого переключения приложений на смартфонах с ОС Android 10 при различных типах навигации:
Инструкция по быстрому переходу между приложениями на смартфоне Samsung Galaxy.
Вначале необходимо настроить телефон под нужный тип управления:
— с помощью жестов;
— с помощью трёх кнопок навигационной панели.
Первый способ быстрого перехода между приложениями с помощью жестов.
Настройка режима:
1. Вначале нужно включить режим управления с помощью жестов проведения.
Запускаем приложение Настройки телефона.
В Настройках телефона нужно войти в раздел «Дисплей».
Скрин №1 – нажать на значок «Настройки». Скрин №2 – войти в раздел «Дисплей».
2. В разделе «Дисплей» нужно войти в подраздел «Навигационная панель».
В подразделе «Навигационная панель» нужно активировать тип навигации «Жесты проведения».
Скрин №3 – нажать на пункт «Навигационная панель». Скрин №4 – активировать тип навигации «Жесты проведения».
3. После этого нужно открыть пункт «Другие параметры».
И в настройках «Жесты проведения» включить пункт «Проведение от нижнего края экрана и боковых краёв».
Скрин №5 – коснуться пункта «Другие параметры». Скрин №6 – активировать пункт «Проведение от нижнего края экрана и боковых краёв».
После этого в самом низу экрана вместо трёх кнопок навигации появится одна тонка линия.
Всё. Все настройки для управления жестами сделаны.
Переходим к порядку переключения приложений с помощью жеста.
Жест «Перелистывание приложений»:
Переключение между открытыми приложениями осуществляется с помощью дугообразного свайпа.
У вас на экране одно из открытых приложений. Для перехода к следующему открытому приложению нужно коснутся тонкой линии внизу экрана и далее свайпом сделать дугообразный жест вверх вправо или влево.
Тем самым вы «перелистнёте» текущее приложение на следующий экран вправо или влево.
Скрин №7 – сделать жест свайп «дуга от нижнего края экрана вправо». Скрин №8 – смена приложений при проведении жеста.
Скрин №9 – снять палец с экрана. Следующее приложение заняло своё место на экране.
Таким способом можно «листать» приложения как вправо, так и влево, перебирая их одно за другим.
Очень удобно и быстро!
Второй способ быстрого перехода между приложениями с помощью кнопки «Последние».
Настройка режима:
Для включения режима управления с помощью трёх кнопок навигации («Назад», «Домой» и «Последние»), нужно вернуться в подраздел «Навигационная панель» и выбрать тип навигации «Кнопки».
После этого в самом низу экрана вместо тонкой линии появятся три навигационные кнопки.
Скрин №10 – вернуться в подраздел «Навигационная панель». Выбрать тип навигации «Кнопки». Скрин №11 – вид настроек «Навигационной панели» в режиме управления кнопками.
Режим навигации с помощью кнопок активирован.
Перелистывание приложений двойным нажатием кнопки «Последние»:
Этот способ позволяет переключаться между двумя последними приложениями, находясь на любом экране телефона!
Дважды нажимая на кнопку «Последние» (или «Обзор») в виде трёх вертикальных линий в самом низу экрана вы будете быстро переключаться между двумя последними открытыми процессами (приложениями).
Важное замечание: переключение происходит по кругу только между двумя последними приложениями. Поэтому, если у вас открыто более 2-х приложений, то вам вначале нужно перейти на «первое» приложение с помощью кнопки «Последние», а далее быстрое переключение осуществлять между этим и следующим приложением дважды нажимая на кнопку «Последние».
Скрин №12 – дважды нажать на навигационную кнопку «Последние». Скрин №13 – телефон сам перелистнёт приложение с первого на второе.
Скрин №14 – вид активированного второго приложения.
Вот такой второй простой способ «перелистывания» между нужными приложениями с помощью одной навигационной кнопки «Последние». Пользуйтесь на здоровье.
Источник
Android переключение между приложениями
Еще в Android Nougat (к слову, одной из самых популярных версий ОС на данный момент) появилась функция быстрого перехода между активными приложениями. Возможность хоть и оставалась не самой популярной, но продолжала поддерживаться в каждом новом апдейте с незначительными изменениями.
Когда удобнее переключаться между приложениями, а не открыать их через рабочий стол
Ситуаций может быть множество. Например, при обработке фотографии в новом приложении, подробная инструкция по работе с которым открыта в браузере. По сути это то же самое, что на компьютере переключаться между окнами.
На версиях Android Nougat и Oreo выполнить переход очень просто. Достаточно дважды нажать на кнопку открытых программ (прямоугольник в нижней части экрана). Отобразится веер со всеми запущенными приложениями. Если не сделать выбор нужного, в некоторых прошивках автоматически открывается последнее.
Владельцам смартфонов на Android Pie нужно от клавиши «Home» сделать полный свайп в правую сторону. Если к устройству подключена внешняя клавиатура (как это сделать двумя способами мы подробно рассматривали в этой статье), достаточно нажать комбинацию ALT+Tab.
На вкладке Панель запуска , открываемой с главного экрана , содержатся значки всех приложений, установленных на телефоне, включая приложения, загруженные и установленные из Android Маркета или других источников.
При открытии приложения другие используемые приложения не останавливаются — они продолжают выполняться: воспроизводится музыка, отображаются веб-страницы и т. д. Можно быстро переключаться между приложениями для работы с несколькими приложениями одновременно. Операционная система Android и работающие в ней приложения взаимодействуют, чтобы неиспользуемые приложения не задействовали ресурсы. При необходимости приложения останавливаются и снова запускаются. Поэтому нет причин останавливать приложения, если только вы не уверены, что загруженное приложение функционирует неверно. Подробные сведения об использовании приложениями памяти и о способах управления этими приложениями см. в разделе «Управление использованием памяти приложениями».
Сведения о поиске и установке дополнительных приложений для вашего телефона (включая инструменты измерения производительности, служебные программы, игры, справочные материалы и прочие виды программного обеспечения) см. в разделе «Маркет».
Открытие и закрытие Панель запуска
- На главном экране нажмите значок панели запуска Если открыто больше приложений, чем может разместиться на панели запуска, можно прокрутить панель вверх или вниз для просмотра всех приложений.
Можно добавить значок приложения на главный экран: для этого следует нажать и удержать значок на Панель запуска, пока не включится вибрация, а затем перетащить значок в нужное место на главном экране.
- Нажмите значок «Главная» на Панель запуска или кнопку Главная Панель запуска закрывается автоматически, если нажать значок для открытия приложения или переместить значок с панели Панель запуска на главный экран.
Открытие приложения
- Нажмите значок приложения на панели Панель запуска.
- Нажмите значок приложения на главном экране.
Переключение на недавно используемое приложение
- Нажмите и удерживайте кнопку Главная
.
Откроется небольшое окно, содержащее значки всех использованных в последнее время приложений.
- Нажмите значок для открытия связанного с ним приложения.
Или нажмите кнопку Назаддля возвращения к текущему приложению.
Простое переключение на другой экран
Приложение не всегда состоит из одного экрана. Например, мы создали очень полезную программу и пользователю хочется узнать, кто же её автор. Он нажимает на кнопку «О программе» и попадает на новый экран, где находится полезная информация о версии программы, авторе, адресе сайта, сколько у автора котов и т.д. Воспринимайте экран активности как веб-страницу с ссылкой на другую страницу. Если вы посмотрите на код в файле MainActivity.java из прошлых уроков, то увидите, что наш класс MainActivity тоже относится к Activity (или его наследникам) или, если говорить точнее, наследуется от него.
Как нетрудно догадаться, нам следует создать новый класс, который может быть похож на MainActivity и затем как-то переключиться на него при нажатии кнопки.
Для эксперимента мы возьмём программу из первого урока и будем использовать для опытов кнопку (или создайте новый проект с одной кнопкой на экране). Далее создадим новую форму для отображения полезной информации. Например, покажем пользователю, что делает кот, когда идёт налево и направо. Согласитесь, это очень важная информация, дающая ключ к разгадке Вселенной.
Создавать новую активность будем вручную, хотя в студии есть готовые шаблоны. Но там ничего сложного и для лучшего понимания полезно всё делать руками.
Создадим новый XML-файл разметки activity_about.xml в папке res/layout. Щёлкните правой кнопкой мыши на папке layout и выберите из контекстного меню New | Layout resource file. Появится диалоговое окно. В первом поле вводим имя файла activity_about. Во втором нужно ввести корневой элемент. По умолчанию там стоит ConstraintLayout. Стираем текст и вводим ScrollView. Ввода нескольких символов достаточно, чтобы студия подсказала готовые варианты, можно сразу нажать Enter, не дожидаясь полного ввода слова:
Получится соответствующая заготовка, в которую вставим элемент TextView.
Информация будет извлекаться из ресурсов, а именно из строкового ресурса about_text. Сейчас он подсвечен красным цветом, сигнализируя об отсутствии информации. Можно было нажать Alt+Enter и ввести текст в диалоговом окне. Но для нашего примера этот способ не подойдёт, так как наш текст будет многострочным, с использованием управляющих символов. Поэтому поступим по-другому. Откроем файл res/values/strings.xml и вводим следующий текст вручную:
Мы использовали простейшие HTML-теги форматирования текста типа , , . Для нашего примера достаточно выделить жирным слова, которые относятся к коту и направлению движения. Для перевода текста на новую строку используйте символы
. Добавим ещё один строковый ресурс для заголовка нового экрана:
С разметкой разобрались. Далее необходимо создать класс для окна AboutActivity.java. Выбираем в меню File | New | Java Class и заполняем нужные поля. На первых порах достаточно указать только имя. Потом разберётесь с другими полями.
Сейчас класс практически пустой. Добавим код вручную. Класс должен наследоваться от абстрактного класса Activity или его родственников типа FragmentActivity, AppCompatActivity и т.д. Дописываем extends Activity. У класса активности должен быть метод onCreate(). Ставим курсор мыши внутри класса и выбираем в меню Code | Override Methods (Ctrl+O). В диалоговом окне ищем нужный класс, можно набирать на клавиатуре первые символы для быстрого поиска. В созданном методе нужно вызвать метод setContentView(), который подгрузит на экран подготовленную разметку. У нас получится такой вариант.
Теперь начинается самое главное. Наша задача — перейти на новый экран при щелчку кнопки на первом экране. Переходим обратно к классу MainActivity. Напишем обработчик щелчка кнопки:
Здесь я использовал способ обработки нажатия кнопки, о котором рассказывалось в занятии Щелчок кнопки/Счётчик ворон.
Для запуска нового экрана необходимо создать экземпляр класса Intent и указать в первом параметре текущий класс, а во втором — класс для перехода, у нас это AboutActivity. После этого вызывается метод startActivity(), который и запускает новый экран.
Если вы сейчас попытаетесь проверить работу приложения в эмуляторе, то получите сообщение об ошибке. Что мы сделали неправильно? Мы пропустили один важный шаг. Необходимо зарегистрировать новый Activity в манифесте AndroidManifest.xml. Найдите этот файл в своем проекте и дважды щёлкните на нём. Откроется окно редактирования файла. Добавьте новый тег после закрывающего тега для первой активности. Печатайте самостоятельно и активно используйте подсказки. Получится следующее:
Вот и пригодился строковый ресурс about_title. Запускаем приложение, щёлкаем на кнопке и получаем окно О программе. Таким образом мы научились создавать новое окно и вызывать его по щелчку кнопки. А в нашем распоряжении появилась мегаудобная программа — теперь всегда под рукой будет подсказка, что делает кот, когда идёт налево.
Ещё раз обращаю внимание, что второй создаваемый класс активности должен наследоваться от класса Activity или ему похожих (ListActivity и др.), иметь XML-файл разметки (если требуется) и быть прописан в манифесте.
После вызова метода startActivity() запустится новая активность (в данном случае AboutActivity), она станет видимой и переместится на вершину стека, содержащего работающие компоненты. При вызове метода finish() из новой активности (или при нажатии аппаратной клавиши возврата) она будет закрыта и удалена из стека. Разработчик также может перемещаться к предыдущей (или к любой другой) активности, используя всё тот же метод startActivity().
Создаём третий экран — способ для ленивых
Программисты, как и коты, существа ленивые. Постоянно помнить, что для активности нужно создать разметку и класс, который наследуется от Activity, а затем не забыть прописать класс в манифесте — да ну нафиг.
В этом случае выберите в меню File | New | Activity | Basic Activity (или другой шаблон). Дальше появится знакомое вам окно создания новой активности. Заполняем необходимые поля.
Нажимаем на кнопку Finish и активность будет готова. Чтобы убедиться в этом, откройте файл манифеста и проверьте наличие новой записи. Про файлы класса и разметки я уже не говорю, они сами появятся перед вами.
Самостоятельно добавьте новую кнопку на экране главной активности и напишите код для перехода на созданную активность.
На первых порах я бы посоветовал вам вручную создавать все необходимые компоненты для новой активности, чтобы понимать взаимосвязь между классом, разметкой и манифестом. А когда набьёте руку, то можете использовать мастер создания активности для ускорения работы.
Передача данных между активностями
Мы использовали простейший пример для вызова другого экрана активности. Иногда требуется не только вызвать новый экран, но и передать в него данные. Например, имя пользователя. В этом случае нужно задействовать специальную область extraData, который имеется у класса Intent.
Область extraData — это список пар ключ/значение, который передаётся вместе с намерением. В качестве ключей используются строки, а для значений можно использовать любые примитивные типы данных, массивы примитивов, объекты класса Bundle и др.
Для передачи данных в другую активность используется метод putExtra():
Принимающая активность должна вызвать какой-нибудь подходящий метод: getIntExtra(), getStringExtra() и т.д.:
Переделаем предыдущий пример. У нас уже есть три активности. У первой активности разместим два текстовых поля и кнопку. Внешний вид может быть следующим:
У второй активности SecondActivity установим элемент TextView, в котором будем выводить текст, полученный от первой активности. Напишем следующий код для метода onCreate() у второй активности.
Если сейчас запустить программу и просто вызвать второе окно, как это было описано в первой части статьи, то мы увидим надпись по умолчанию ЖЫвотное, вам передали дырку от бублика. Согласитесь, довольно обидно получать такие сообщения.
Исправляем ситуацию. Добавляем код у первой активности:
Мы поместили в специальный контейнер объекта Intent два ключа со значениями, которые берутся из текстовых полей. Когда пользователь введёт данные в текстовые поля, они попадут в этот контейнер и будут переданы второй активности.
Вторая активность должна быть готова к тёплому приёму сообщений следующим образом (выделено жирным).
Теперь сообщение выглядит не столь обидным, а даже приятным для кое-кого. В сложных примерах желательно добавить проверку при обработке данных. Возможны ситуации, когда вы запустите вторую активность с пустыми данными типа null, что может привести к краху приложения.
В нашем случае мы знаем, что ждём строковое значение, поэтому код можно переписать так:
У программы есть недостаток — не понятно, от кого мы получаем приветы. Любая хорошо воспитанная мартышка не возьмет подарок от анонимного источника. Поэтому в качестве домашнего задания добавьте ещё одно текстовое поле для ввода имени пользователя, который отправляет сообщение.
Google рекомендует для ключей использовать следующий формат: имя вашего пакета в качестве префикса, а затем сам ключ. В этом случае можно быть уверенным в уникальности ключа при взаимодействии с другими приложениями. Приблизительно так:
Кто подставил кота Ваську — получаем результат обратно
Не всегда бывает достаточно просто передать данные другой активности. Иногда требуется получить информацию обратно от другой активности при её закрытии. Если раньше мы использовали метод startActivity(Intent intent), то существует родственный ему метод startActivityForResult(Intent intent, int RequestCode). Разница между методами заключается в дополнительном параметре RequestCode. По сути это просто целое число, которое вы можете сами придумать. Оно нужно для того, чтобы различать от кого пришёл результат. Допустим у вас есть пять дополнительных экранов и вы присваиваете им значения от 1 до 5, и по этому коду вы сможете определить, чей результат вам нужно обрабатывать. Вы можете использовать значение -1, тогда это будет равносильно вызову метода startActivity(), т.е. никакого результата не получим.
Если вы используете метод startActivityForResult(), то вам необходимо переопределить в коде метод для приёма результата onActivityResult() и обработать полученный результат. Запутались? Давайте разберём пример.
Предположим, вы сыщик. Поступила информация, что в ресторане со стола влиятельного человека украли два кусочка колбасы и другие продукты. Подозрение пало на трёх подозреваемых — ворона, сраный пёсик и кот Васька.
Один из посетителей предоставил серию фотографий со своего понтового айфона:
Также имеются показания другого свидетеля: А Васька слушает, да ест.
Создаём новый проект Sherlock с двумя активностями. На первом экране будет кнопка для переключения на второй экран и текстовая метка, в которой будет отображено имя воришки.
На втором экране будет группа переключателей:
Так как мы будем ожидать ответ из второго экрана, то нам необходимо задействовать метод startActivityForResult() на первом экране, в котором мы передадим переменную CHOOSE_THIEF в качестве параметра RequestCode.
Посмотрите на код. При щелчке на кнопке мы собираемся работать со вторым экраном ChooseActivity и запускаем второй экран с ожиданием результата.
Переходим на второй экран и будем писать код для второй активности.
Здесь всё просто, когда сыщик выбирает имя преступника, то через метод putExtra() мы передаём имя ключа и его значение.
Для удобства, после выбора мы сразу закрываем второе окно и перед закрытием передаём значение RESULT_OK, чтобы было понятно, что выбор сделан. Если пользователь закроет экран через кнопку Back, то будет передано значение RESULT_CANCELED.
Метод setResult() принимает два параметра: результирующий код и сам результат, представленный в виде намерения. Результирующий код говорит о том, с каким результатом завершилась работа активности, как правило, это либо Activity.RESULT_OK, либо Activity.RESULT_CANCELED. В некоторых случаях нужно использовать собственный код возврата для обработки специфических для вашего приложения вариантов. Метод setResult() поддерживает любое целочисленное значение.
Если вы будете передавать данные явно через кнопку, то неплохо бы добавить метод finish(), чтобы закрыть вторую активность за ненадобностью. Если переход происходит через кнопку Назад, то это делать не обязательно.
Если активность была закрыта пользователем при нажатии аппаратной кнопки возврата или если метод finish() был вызван раньше, чем метод setResult(), результирующий код установится в RESULT_CANCELED, а возвращенное намерение покажет значение null.
Возвращаемся на первый экран. Первый экран ожидает ответа от второго экрана, поэтому нужно добавить в код метод onActivityResult().
Метод ожидает входящие данные с кодом CHOOSE_THIEF, и если такие данные поступят, то извлекает значение из ключа ChooseActivity.THIEF с помощью метода getStringExtra. Полученное значение мы выводим в TextView (переменная infoTextView). Если мы вернулись на экран через кнопку Back, то просто стираем текст.
При закрытии дочерней активности внутри родительского компонента срабатывает обработчик onActivityResult(). Обработчик onActivityResult() принимает несколько параметров.
- Код запроса. Код, который использовался для запуска активности, возвращающей результат
- Результирующий код. Код результата, устанавливаемый дочерней активностью и указывающий, как завершилась её работа. Это может быть любое целочисленное значение, но, как правило, либо Activity.RESULT_OK, либо Activity.RESULT_CANCELED
- Данные. Намерение, используемое для упаковки возвращаемых данных. В зависимости от назначения дочерней активности оно может включать путь URI, представляющий выбранную часть содержимого. В качестве альтернативы (или дополнения) дочерняя активность может возвращать информацию в виде простых значений, упакованных в параметр намерения extras
Запускаем проект, нажимаем на кнопку и переходим на второй экран. Там выбираем один из вариантов. Если выбрать ворону, то экран закроется и имя преступника отобразится на первом экране. Если выбрать пёсика, то отобразится его имя.
Между прочим, если выбрать котика, то его имя не отобразится! Проверьте и убедитесь сами. Вы спросите почему? Элементарно, Ватсон! Преступник не учёл одной важной детали. В ресторане велось наблюдение с видеокамер, и запись показала, кто на самом деле украл колбаску и подставил кота. Васька, держись!
P.S. Если поначалу что-то показалось непонятным, то с практикой многое прояснится. Передача данных между экранами часто встречается в приложениях и вы ещё не раз изучите пример.
P.P.S. Лучшая рыба — колбаса. Зная эту слабость, нетрудно было подставить кота.
Используем фильтры
В статье я показывал распространённый способ перехода на другую активность, когда в методе startActivity() указывается текущий класс и класс для перехода. Кстати, класс активности не обязательно должен быть частью вашего приложения. Если вы знаете имя класса из другого приложения, то можете перейти и на него. Но можно перейти в другую активность другим способом.
На практике встречается реже, но может пригодиться. Допустим, у вас уже есть вторая активность. В манифесте добавим к ней специальный фильтр:
И запускаем вторую активность через щелчок кнопки таким способом.
Заменим длинную строку на константу.
Итак, что мы сделали. Для второй активности мы прописали фильтр и указали имя для action в атрибуте android:name. Для удобства я просто поместил в него полное имя активности с названием пакета. Конструктор класса Intent имеет несколько перегруженных версий. В одной из версий можно указать строку для действия. Мы указали своё созданное действие, которое прописано у второй активности. Система во время работы просматривает манифесты всех установленных приложений. При поиске соответствия система находит наш фильтр и запускает нужную активность.
По такому же принципу можно запустить другие активности. Посмотрите на пример Открываем окно настроек для автономного режима. Если вы скопируете пример к себе и посмотрите на документацию по andro . Сравните с нашим кодом. Вы можете предположить, что у активности настроек для автономного режима в фильтре прописана эта строка.
Имя категории фильтра android.intent.category.DEFAULT говорит системе, что следует выполнить действие по умолчанию, а именно, запустить активность. Существует и другие имена, которые пока нас не интересуют.
А теперь вопрос на засыпку. Что произойдёт, если создать ещё одну активность и указать такой же фильтр, как у второй активности? А давайте проверим. Создайте у себя третью активность и скопируйте блок с фильтром от второй активности в него.
Щёлкаем по кнопке в первой активности. Система попросит выбрать нужный вариант.
Если вы выберите пункт ALWAYS, то в следующий раз выбирать не придётся. Чтобы сбросить выбор, зайдите в свойства приложения в Настройках и найдите кнопку Clear defaults.
Запуск активности по его имени
В конструкторе Intent вторым параметром идёт класс. Но предположим, что имеется какая-то база данных, где указаны имена активностей и нам нужно запустить нужную активность по его имени. Мы можем на основе строковой переменной получить сам класс и запустить активность.
Источник