У меня 2 вида деятельности: Основное и Список.
Из Главного вы можете открыть Список; из списка вы можете открыть Main.
Я хотел бы это так , чтобы каждое открытие списка никак не спасется в «истории». Таким образом, возврат из Main не может вернуться в список.
Является ли это возможным?
android
back-stack
реалтебо
источник
источник
finish()
сразу после этого он будет вызванstartActivity(...)
. Таким образом, если пользователь нажмет BACK из «main», вернуться будет не к чему.Ответы:
При запуске списка
Activity
установите егоIntent
флаги следующим образом:FLAG_ACTIVITY_NO_HISTORY
Флаг держит новыйActivity
от добавления в стек истории.NB: как указывает @Sam, вы можете использовать
i.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
вместо этого. Функциональной разницы нет.источник
Intent
флага, который гласит, что «только добавляет в историю, если не возвращается кActivity
исходной точке».setFlags()
сgetFlags()
вместоIntent.addFlags()
?В файле манифеста добавьте:
к деятельности, которую вы не хотите хранить в стеке.
источник
Воспользуйтесь новой задачей с очисткой. Это сработало в моем случае, когда другие варианты не работали.
Очистите весь стек истории и начните новое действие на Android
источник
Похоже, что если вы вызываете finish () для своей активности сразу после того, как открыли другую, завершенная удаляется из стека.
например:
источник
В моем конкретном случае
FLAG_ACTIVITY_NO_HISTORY
не сработало. Ни не работали,FLAG_ACTIVITY_NEW_TASK
ниFLAG_ACTIVITY_CLEAR_TASK
сами по себе.Однако
FLAG_ACTIVITY_NEW_TASK
иFLAG_ACTIVITY_CLEAR_TASK
вместе работали.источник
Поздний ответ, но добавляет глубины другим ответам. Все сводится к тому, что вы хотите сделать с другими действиями, начатыми с этого действия.
Вариант 1. Только это одно действие не должно иметь истории вызовов.
Тогда просто сделайте:
Вариант 2. Все действия, начатые с этого конкретного действия, не должны иметь истории
Затем добавьте в манифест вызывающей активности:
Но если вы действительно хотите иметь историю в новом действии, вам нужно вручную удалить флаг:
Надеюсь, что это проясняет другие ответы :)
источник
Просто хотел добавить способ сделать это в Котлине:
источник
Intent(this, MainActivity::class.java).apply { addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK) }.also { startActivity(it) }
Попробуйте FLAG_ACTIVITY_CLEAR_TOP, если действие уже выполняется:
источник
добавьте флаг
FLAG_ACTIVITY_NEW_TASK
в свойIntent
http://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_NEW_TASK
источник
Разве вы не можете переопределить кнопку «Назад» на конкретном действии, чтобы остановить функцию «возврата»?
источник
Activity
является хорошей практикой.OnBackPressed
.