Навигация по Android: как вернуться к предыдущему экрану?

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

Ответы (2)

Это некоторое упрощение, но простой ответ: вы не можете.

Что делает это чрезмерным упрощением? Ну, это потому, что это зависит от того, как реализовано данное приложение. Приложения для Android основаны на концепции Activity , которая описана в документации по разработке как:

Активность — это отдельная целенаправленная вещь, которую может делать пользователь.

Когда запускается новое действие, оно помещается в общесистемный «стек действий» наверху стека (для тех, кто не знаком, см. Стек (структура данных) ). Когда нажата кнопка «Назад», текущая активность (в верхней части стека) завершается и удаляется из стека, в результате чего предыдущая (под ней в стеке) переносится на передний план. Это поведение всплывающего окна/переноса на передний план продолжается, пока вы продолжаете нажимать кнопку «Назад», пока не приземлитесь на ДОМОЙ, что является началом стека. Отсюда вы не можете вернуться «назад» дальше.

Теперь, как это относится к приложениям? Во многих приложениях действие представляет собой один отдельный экран. Когда вы переходите к новому экрану, для этого экрана фактически создается новое действие, которое помещается в стек поверх того, которое его создало. В приложениях, использующих этот дизайн, ответный удар фактически приведет вас к предыдущему экрану. Причина должна быть довольно очевидной: экран, который вы просматриваете в данный момент, находится на вершине стека, предыдущий экран находится под ним (поскольку каждый из них сам является Действиями). Таким образом, ответный удар удаляет текущий экран из стека, завершает его, а затем загружает предыдущий.

Однако это не обязательная модель . У вас может быть Activity, содержащее несколько макетов и экранов. Мы использовали это в моем офисе, например, для создания своего рода мастера настройки. Идея состоит в том, что ответный удар должен просто выйти из мастера, а на самом экране есть кнопки «Назад» и «Далее», обеспечивающие навигацию. Таким образом, даже если вы находитесь на третьем экране мастера, вы не создали никаких дополнительных действий, поэтому нажатие кнопки «Назад» (аппаратная кнопка) выведет вас из «Действия мастера» и вернет вас в «Действие меню».

Кроме того, поведение кнопки «Назад» может быть переопределено приложением по их выбору. Он просто вызывает метод с именем onBackPressed(), который выполняет поведение по умолчанию, возвращаясь назад в стеке Activity. onBackPressed()Однако, если в текущем действии есть переопределенная реализация , она будет выполнена вместо этого.

Итак, подведем итог: идея о том, что кнопка «Назад» возвращает на предыдущий «экран», вовсе не гарантируется. Кнопка жесткого возврата имеет дело только с действиями , которые часто являются «экранами» для пользователя, но не обязательно и никоим образом не требуются. Не существует понятия «вернуться на один экран назад », если приложение, которое вы используете, не говорит об этом, но эта функциональность по-прежнему не гарантируется самой кнопкой «Назад».

Дальнейшее чтение:

Если приложение не возвращает вас к предыдущему экрану, когда вы нажимаете «Назад», вы или Android ничего не можете с этим поделать. Вы можете попросить разработчика приложения реализовать его, но это все.