Android studio подтверждение выхода

Android: закрытие приложения по кнопке «назад»

Подскажите, пожалуйста, как правильно закрывать приложение по нажатию кнопки «назад»? Сейчас использую вот такой код (в Activity):

Но что-то мне говорит, что это не совсем верно и избыточно. Приложение — игра с libgdx, используется только одно Activity.

  • Вопрос задан более трёх лет назад
  • 35472 просмотра

Когда Вы закрываете приложение кнопной «Назад», то вызывается метод onDestroy(). Для этого перехватывать нажатие этой кнопки в методе onBackPressed() не имеет смысла. Достаточно сделать так:

public void onDestroy() <
moveTaskToBack(true);

Перехватывать нажатие кнопки «Назад» имеет смысл тогда, когда надо реализовать подтверждение выхода из игры или что-то в этом роде.

Как правильно завершить свой поток в Actitvity в onDestroy? Не подумайте чего — все облазил — каких методов только не предлагается. Но видимо так?

А если еще и SurfaceView используется, то нужно его принудительно завершать? удалять калбак из него? finish() при использовании SurfaceView не всегда закрывает приложение корректно — иногда появлzется исключение — видимо не закрывается поток рисования в SurfaceView, хотя в SurfaceView.onDestroy и делается drawingThread.interrupt().

Короче у меня работоспособный вариант выглядит так примерно ACTIVITY:

Но при этом у потока backgroundThread есть «чудо» переменная indicatorOfWork

Тогда как должен выглядеть для кнопки НАЗАД этот метод?

а то все возможные варианты, что приходили на ум давали исключение при нажатии Назад

Источник

Как выйти из приложения Android с помощью кода?

Я уверен, что этот вопрос задавался несколько раз, потому что я мало читал. Мой клиент хочет, чтобы я нажал кнопку в его приложении, где пользователи могут нажать и выйти. Я прочитал это и нашел, что call finish() сделает это. Но, закончить – это только закрытие текущей текущей активности? У меня много действий, поэтому в этом случае я должен передать экземпляр каждого действия и закончить их или сделать каждое действие в шаблоне Singleton.

Я также узнал, что Activity.moveTaskToBack(true) может попасть на главный экран. ОК, это не закрытие, а фоновая обработка процесса. Так это эффективно?

Какой метод следует использовать для закрытия приложения ПОЛНОСТЬЮ? Любое из описанных выше или любого другого метода / другого использования вышеуказанных методов?

Вы можете вызвать System.exit (); Чтобы выйти из всех занятий.

Фактически каждый ищет закрытие приложения в событии onclick, где бы это ни было …

Итак, друзья друзей пробовали этот код. Поместите этот код в событие onclick

Если вы хотите выйти из приложения, используйте этот код внутри нажатой кнопки:

Это слишком легко. Используйте System.exit(0);

В общем, есть две ситуации. 1. Вы можете выйти из действия 2. Или вы хотите выйти из приложения.

Вы можете выйти из операции, используя следующий код.

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

Я хочу выйти из приложения формы, используя следующий код, который закончит процесс приложения.

Для моноразработки просто используйте

Попробуйте это по вызову. Я иногда использую его в onClick кнопки.

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

Прочитайте этот вопрос для большей ясности android – код выхода из приложения

Как насчет this.finishAffinity()

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

Призрачная активность, вызываемая с помощью singleletop и finish () на onCreate, должна делать трюк

Читайте также:  Поиск андроид смартфона андроид

Поместите это в свой onClic:

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

Он работает, используя только moveTaskToBack(true);

Если вы используете EventBus (или действительно любую другую паб / вспомогательную библиотеку) в своем приложении для связи между действиями, вы можете отправить им явное событие:

Единственным недостатком этого является то, что вам нужно все действия, чтобы прослушать это событие, чтобы назвать свой собственный finish() . Для этого вы можете легко создавать классы активности шайбы через наследование, которые просто прослушивают это событие и позволяют подклассам реализовать все остальное, а затем убедитесь, что все ваши действия наследуются от этого дополнительного слоя. Слушатели-убийцы могут даже добавить некоторые дополнительные функции с помощью переопределений, например, избегая смерти в определенных ситуациях.

Это очистит Task (стек действий) и начнет новую задачу

Если вы используете как завершение, так и выход из приложения,

Источник

Диалоговые окна в Android. Часть 1

Dialog

Dialog — это класс, принадлежащий Android SDK и помогающий нам, простым смертным программистам, работать с диалоговыми окнами в Android. Класс Dialog имеет 4 подкласса:

  • AlertDialog: это диалоговое окно для различных сообщений приложения, например «Вы хотите купить мое приложение?» или что то в этом роде. AlertDialog поддерживает три кнопки — утвердительную (OK), отрицательную (Cancel) и нейтральную (Later).
  • ProgressDialog: это диалоговое окно для отображения выполнения различных процессов, загрузки, например.
  • DatePickerDialog: диалоговое окно предлагает пользователю выбрать дату.
  • TimePickerDialog: диалоговое окно предлагает пользователю выбрать время

На первом из этого списка, AlertDialog мы и остановимся подробнее.

AlertDialog

Чтобы создать диалоговое окно AlertDialog нам в помощь потребуется экземпляр класса Builder:
AlertDialog.Builder builder = new AlertDialog.Builder(this);
Теперь, когда у нас есть builder, мы можем «строить» свое собственное диалоговое окно. В параметры диалогового окна Вы можете написать множество различных параметров, но основными являются эти:

  • setTitle(int resID) — задает заголовок диалогового окна, принимает в качестве аргументов ссылку на ресурс или строку.
  • setMessage(int resID) — задает сообщение в диалоговом окне, также принимает ссылку на ресурс или строку.
  • setPositiveButton(int textID, DialogInterface.OnClickListener listener) — устанавливает на Вашем диалоговом окне утвердительную кнопку с текстом ресурса textID и слушателем listener. Методы setNegativeButton и setNeutralButton идентичны, с разницей в назначении кнопок.

Пример создания AlertDialog:

В этом примере я использовал setCancelable(true) — это разрешает пользователю закрывать диалоговое окно с помощью хардварной кнопки Back. Еще я создал слушателя для утвердительной кнопки и использовал метод create(). Метод create() возвращает готовое диалоговое окно с вашими параметрами как экземпляр класса AlertDialog.
Вот мы и создали диалоговое окно! Следующая задача — показать его пользователю. Вот тут есть несколько вариантов:

  • showDialog(AlertDialog dialog) — самый простой способ показать диалоговое окно, но начиная с версии 3.0 разработчики Android не рекомендуют пользоваться этим методом, и в результате вы получите предупреждение, которое можно обойти только @SurpressWarning, что есть не совсем хорошо.
  • AlertDialog dialog.show() — альтернативный способ показать окно, для этого в экземпляре dialog должен лежать результат метода Builder.create().

Второй метод нам подходит больше, но писать в основной активности кучу различных Buider и AlertDialog портит читабельность кода. Поэтому целесообразней вынести создание и обработку диалоговых окон в новый класс, например:

Единственная заметка по поводу этого кода будет про использования метода setView(View view) в диалоге IDD_SETTINGS. У AlertDialog как и у всех остальных диалоговых окон есть одна приятная особенность — им можно задавать собственные Layout, что позволяет полностью видоизменять диалоговые окна и их содержимое. Здесь есть один подводный камень: обработку элементов этого Layout вы должны будете производить именно в той Activity, где вызываете это диалоговое окно. Например я показываю диалоговое окно IDD_SETTINGS в MainActivity с Layout по имени settings:

Соответственно я загружаю это окно в MainActivity:

Метод initSettings класса MainActivity в данном случае будет выглядеть так:

Ну а дальше обрабатываете свои объекты как вам угодно.

Небольшой итог

1) Для большинства целей диалоговых окон подходит AlertDialog
2) AlertDialog может принимать вид layout с любыми объектами
3) Гораздо лучше использовать для диалоговых окон отдельный класс и пользоваться AlertDialog.show()
4) Обработка объектов кастомного layout производится в активности, вызвавшей диалог

В следующей части этой статьи пойдет речь о DialogFragment, который был включен в Android SDK начиная с 3.0 Honeycomb. Надеюсь эта статья поможет новичкам и не очень в своих квестах по завоеванию Google Play.

Читайте также:  Как очистить реестр андроид

Источник

Как показать диалоговое окно, чтобы подтвердить, что пользователь хочет выйти из Android Activity?

Я пытался показать «Вы хотите выйти?» тип диалога, когда пользователь пытается выйти из Activity.

Однако я не могу найти соответствующие хуки API. Activity.onUserLeaveHint() Первоначально выглядело многообещающе, но я не могу найти способ остановить деятельность.

В Android 2.0+ это будет выглядеть так:

В более ранних версиях это выглядело бы так:

Изменили код @ user919216 .. и сделали его совместимым с WebView

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

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

Если вы не уверены, что вызов «назад» выйдет из приложения или переместит пользователя на другое действие, вы можете свернуть вышеуказанные ответы в проверке isTaskRoot (). Это может произойти, если ваша основная деятельность может быть добавлена ​​в задний стек несколько раз, или если вы манипулируете своей историей заднего стека.

Вам также нужно установить язык уровня для поддержки Java 8 в вашем gradle.build:

В Китае большинство приложений подтвердит выход, нажав «дважды»:

Сначала удалите super.onBackPressed(); из onbackPressed() метода, чем и ниже код:

Мне нравится подход @GLee и использование его с фрагментом, как показано ниже.

Диалог с использованием фрагмента:

Другой альтернативой может быть показ Toast / / Snackbar при первом нажатии назад с просьбой снова вернуться к выходу , что гораздо менее навязчиво, чем показ AlertDialog подтверждения, если пользователь хочет выйти из приложения.

Для начала добавьте зависимость в ваше приложение:

Затем, в вашей деятельности, реализуйте требуемое поведение.

Наконец, установите это как поведение при нажатии на спину.

Источник

Android Studio: диалоговое окно AlertDialog

Пользователям часто нужны напоминания, которые будут указывать на выбор или ошибки. Для этого в Android есть специальная встроенная программа, которая гибко настраивается под любые задачи – android studio всплывающее окно. При помощи сервиса удается экономить память и другие ресурсы, создавая заголовки, информационный массив, клавиши и прочее.

Что такое Android Studio? Это специальная среда IDE, которая позволит работать, настраивать и управлять операционной системой Android.

С одной клавишей

Для начала следует разобраться с легким примером, в котором используется только 1 клавиша. Первым делом формируется объем AlertDialog.Builder, передающий в виде примера контекст. После в работу входит техника Builder и формируется для всплывающего меню заголовок, используя команду setTitle(). Для текста подходит способ setMessage(), установка значка формируется в виде setIcon(). Чтобы установить клавишу, применяется техника setNegativeButton(), а обеспечить возможность нажатия на сделанную кнопку поможет комбинация cancel(). Обращать внимание на название техник не нужно, они не несут большой нагрузки.

Для исключения закрытия диалогового окна при помощи кнопки возврата на смартфоне, применяется метод setCancelable() со значением false. В самом конце требуется добиться всплывания окна при помощи команды show(). Например:

Особенности создания и пример с 2 клавишами

На основе кода видно пример формирования диалогового окна с наличием 2 клавиш для использования:

Общие параметры кода не меняются, прежними будут настройки, клавиши и обработка информации. Доступно добавлять в AlertDialog только по 1 клавише любого вида, поэтому в окне будет максимум 3 кнопки для использования.

Для каждого показателя применяются методы со вставкой set. Button, принимающие за основу подпись и внешний вид DialogInterface.OnClickListener, характеризующий операцию при касании. Чтобы исключить закрытие с помощью клавиатуры смартфона, в коде прописывается setCancelable() со значением false или true. Чтобы результат работы отобразился на экране, применяется способ show().

AlertDialog – гибкая программа для настроек. Всплывающее окно бывает самым простым с классическим выбором «Да» и «Нет», но при помощи перечня, флажков или переключателей, конструкция будет усложняться.

Метод onCreateDialog в AlertDialog

Чтобы при помощи android studio alertdialog сохранило состояние, потребуется применять способ активности onCreateDialog(). Для начала выполняются описанные этапы, а для показа работы указывается builder.create(). Пример кода:

Поскольку в одном приложении применяется сразу несколько типов диалоговых окон, потребуется сделать отдельный идентификатор, который поможет вызывать конкретный диалог. Работая на новой ОС Android видно, что метод показа всплывающего окна перечеркнут, поскольку он устаревший. С версии 3.0 пользуются техникой DialogFragment. Для проекта идентификатором выступает IDD_THREE_BUTTONS.

Читайте также:  Скайп для компьютер андроида

AlertDialog с перечнем

Некоторым пользователям важно использовать окна, в которых будет список с несколькими строками на выбор. Они заменяют клавиши, и для этого в коде применяют способ setItems(). В нем указывается часть информации для вывода на экран и dialogInterface.OnClickListener, позволяющий выбрать действие, во время выбора конкретной части из перечня. Для этого готовый код дополняется еще одной клавишей:

После выполнения проекта android studio alertdialog со списком, проводится запуск для проверки. Во время контакта с клавишей должно быть окно AlertDialog, в котором содержится перечень из 3 наименований, помогающий выбрать имя питомца. После касания одного выплывает сообщение, демонстрирующее выбранного питомца.

AlertDialog с переключателями

Всплывающее меню можно сделать с переключателями RadioButton. Для этого применяется техника setSingleChoiceitems() взамен способу setItems(). Если при помощи android studio диалоговое окно делается внутри onCreateDialog(), тогда операционная система Андроид будет управлять состоянием перечня при помощи переключателей. На момент активной работы, меню при дальнейших вызовах сохранит в памяти, ранее выбранные строки.

Создавая проект нужно обратить внимание на детали. Когда выбирается переключатель, всплывающее окно не будет закрываться, нужно заранее продумать этот момент и технику закрытия. К примеру, возможно добавить клавишу. Вторым фактором при использовании способа setSingleChoiceitems выступает то, что для первого значения применяется полный код и настройки, а для второго нужно применить целочисленный показатель индекса, оставляя его включенным всегда при всплывании окна. Значение «-1» применяется для отключения переключателей во время старта окна.

AlertDialog с флажками

Описанные переключатели возможно заменить флажками, которые называются CheckBox. Чтобы получить доступ к выбору параметров, необходимо применить код setMultiChoiceItems(). Визуально изменений почти нет, а детали можно просмотреть в самом коде:

Первое значение в способе setMultiChoiceItems() выступает массивом настроек для перечня с флажками.

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

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

Автоматическое закрытие окна

Обычные сообщения класса Toast закрываются через 1-2 секунды, но диалоговые окна не будут самостоятельно закрываться, пока пользователь не сделает манипуляцию.

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

AlertDialog с рейтингом (проблемный пример)

Применение метода RatingBar для диалогового окна приводит к некорректной работе кода. На дисплее смартфона всегда всплывает 6 звездочек, невзирая на заданные параметры. Если перевернуть приложение в альбомную ориентацию, то будет показано от 7 звездочек, исходя из диагонали.

Для решения проблемы нужно элемент RatingBar поместить в макете wrap_content. Рекомендуется сделать отдельную разметку, с подключением ее к всплывающему окну. Для открытия доступа к настройкам элемента используется метод View.findViewById().

Следует избегать ProgressDialog

Android studio dialog – стандартный класс для всех всплывающих окон. ProgressDialog – это расширение, но оно тоже имеет специальные клавиши, а также индикатор выполненных задач. Но если потребуется показать процесс загрузки или любой другой информации, тогда используется отдельная инструкция по дизайну, что позволяет применять расширение в созданном макете.

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

Применение в работе для управления DialogFragment позволяет добиться корректной обработки жизненных событий в определенное время, поскольку можно задать дополнительные клавиши «Назад» или повернуть экран. Еще класс позволяет повторно использовать интерфейс в виде встраиваемого элемента высшего уровня, по аналогии с классом Fragment. Это требуется при необходимости разного отображения окон на экранах больших и малых устройств.

В результате того, что описанный класс первоначально есть в Android 3.0, в нем будет описано применение класса DialogFragment, которое есть в Библиотеке поддержки. После ее добавления можно воспользоваться самим классом и другими API на гаджетах под управлением ОС Android 1.6 и выше. Если применяются вспомогательные библиотеки, рекомендуется провести импорт класса android.support.v4.app.DialogFragment, но не использовать android.app.DialogFragment.

На видео детально представлены диалоговые окна и программирование Андроид:

Источник

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