Вопрос

В моем приложении есть следующие экранные страницы:

Home->screen 1->screen 2->screen 3->screen 4->screen 5

Теперь у меня есть общая кнопка сгенерированного кода кода на каждом экране

(кодовый код)

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

Я перепробовал почти все генеракодические теги, чтобы добиться этого. Я также просматриваю некоторые ответы в stackoverflow, но не могу решить проблему. Мое приложение работает на Android 1.6, поэтому не могу использовать генерируемый код тегов

Есть ли способ решить проблему?

Это было полезно?

Решение

Использование:

родовое слово

Это очистит все действия в верхней части дома.

Предположим, вы заканчиваете экран входа в систему, когда пользователь входит в систему и создается главная страница, а затем все экраны с 1 по 5 поверх нее.Код, который я опубликовал, вернет вас на главный экран, завершив все остальные действия.Вы можете добавить дополнительный элемент в намерение и прочитать это в действии на главном экране, а также завершить его (возможно, снова запустить экран входа в систему или что-то еще).

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

Надеюсь, это поможет.

Другие советы

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

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

родовое слово

Или, если вы хотите, чтобы он работал в предыдущих версиях Android:

родовое слово

Когда пользователь хочет выйти из всех открытых действий , он должен нажать кнопку, которая загружает первое действие, которое запускается при запуске вашего приложения, очищает все остальные действия, а затем завершает последнее оставшееся действие. . Запустите следующий код, когда пользователь нажимает кнопку выхода. В моем случае LoginActivity - это первое действие в моей программе, которое выполняется.

родовое слово

Приведенный выше код очищает все действия, кроме LoginActivity. Затем поместите следующий код в код LoginActivity для кода onCreate(...), чтобы отслеживать, когда создается код LoginActivity и был передан сигнал EXIT:

родовое слово

Почему так сложно сделать кнопку выхода в Android?

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

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

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

родовое слово

Это будет работать для всех версий Android.Где IntentCompat - это класс, добавленный в библиотеку поддержки Android.

Используйте следующее для деятельности

родовое слово

удалить флаг CLEAR_TASK для использования фрагмента.

Надеюсь, это пригодится некоторым людям.

С developer.android.com : <цитата> родовое слово

Добавлено в API уровня 16

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

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

Я думаю, что опаздываю, но на это есть простой и короткий ответ. В Activity есть метод finishAffinity (), который завершит текущее действие и все родительские действия, но он работает только в Android 4.1 или выше.

Для API 16+ используйте

finishAffinity();

Для младше 16 используйте

ActivityCompat.finishAffinity(YourActivity.this);

Надеюсь, это поможет!

Кстати, полезно знать
Этот ответ работает ( https://stackoverflow.com/a/13468685/7034327 )

родовое слово

тогда как это не работает

родовое слово

.setFlags() заменяет все предыдущие флаги и не добавляет никаких новых флагов, в то время как .addFlags() добавляет.

Так что это тоже сработает

родовое слово

Если у вашего приложения минимальная версия SDK 16, вы можете использовать finishAffinity()

Завершите это действие, а также все действия, расположенные непосредственно под ним в текущей задаче, которые имеют такую же привязку.

Это работает для меня. На экране Top Payment убираются все действия back-stack,

родовое слово

http://developer.android.com/reference / android / app / Activity.html # finishAffinity% 28% 29

Решение, которое я реализовал для этого (я думаю, что нашел его где-то на Stack Overflow, но я не помню, поэтому спасибо тем, кто это сделал в первую очередь):

В любом из ваших занятий сделайте следующее:

родовое слово

Затем в вашем LoginActivity перезапишите onKeyDown:

родовое слово

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

родовое слово
родовое слово

у меня такая же проблема вы можете использовать IntentCompat, например:

родовое слово

этот код работает для меня.

API для Android 17

вместо использования finish() просто используйте finishAffinity();

В моем случае я использую функцию finishAffinity() в последнем действии, например:

Genracodicetagpre

Надеюсь, это будет полезно.

Вход-> Главный-> экран 1-> экран 2-> экран 3-> экран 4-> экран 5

на экране 4 (или любом другом) ->

StartActivity(Log in)
с
FLAG_ACTIVITY_CLEAR_TOP

для API>= 15 по API 23 простое решение.

Genracodicetagpre

Если вы использовали startActivityForResult() в своих предыдущих действиях, просто переопределите OnActivityResult() и вызовите внутри него метод finish(); во всех действиях. Это выполнит свою работу ...

Когда пользователь нажимает кнопку выхода, напишите следующий код:

Genracodicetagpre

А также, когда после входа в систему, если вы вызываете новое действие, не используйте finish ();

Просто, когда вы выходите с экрана входа в систему, а не после завершения экрана входа в систему.

А затем во всех последующих действиях используйте это для выхода:

Genracodicetagpre

Работает отлично.

Если вы входите в систему с помощью кода screen 1 и оттуда вы переходите на другие экраны, используйте

Genracodicetagpre

Я нашел этот способ, он очистит всю историю и выйдет

Genracodicetagpre

Я обнаружил, что это решение работает на всех устройствах, несмотря на уровень API (даже для <11)

Genracodicetagpre
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top