Навигация Android: Как вернуться на предыдущий экран? -- screen поле с участием navigation поле с участием menu пол android Связанный проблема

Navigating Android: How To Go Back To Previous Screen?


3
vote

проблема

русский

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

Английский оригинал

I would like to know how to return to previous screen on Android. Not just go back. I usually tap "Back" button on smartphone but often it just exists or takes me back to home when it should have taken me to previous screen.

        

Список ответов

5
 
vote
vote
Лучший ответ
 

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

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

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

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

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

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

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

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

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

    .
  • Действие и дизайн задач
  • Документация на активность
 

This is something of an oversimplification, but the simple answer is: you can't.

What makes this an oversimplification? Well, it's because it depends on how a given app is implemented. Android applications are based around the concept of an Activity, which is described in the development documentation as:

An activity is a single, focused thing that the user can do.

When a new Activity is launched it is placed onto a system-wide "Activity stack" at the top of the stack (for anyone unfamiliar, see Stack (data structure)). When the back button is pressed, the current Activity (at the top of the stack) is finished and removed from the stack, causing the previous one (beneath it on the stack) to be brought to the foreground. This pop/bring-to-foreground behavior continues as you keep pressing the back button until you land at HOME, which is the start of the stack. From here, you cannot go "back" any further.

Now, how does this apply to apps? In many applications, an Activity represents one, individual screen. When you advance to a new screen, then, a new Activity is actually created for the screen and pushed onto the stack on top of the one that created it. In apps that use this design, hitting back will, in fact, bring you to the previous screen. The reason should be fairly self-evident: the screen you are currently viewing is on the top of the stack, the previous screen sits below it (since they are each Activities themselves). Thus, hitting back removes the current screen from the stack, finishes it, and then loads the previous one.

This is not a required model, however. You can have an Activity that contains multiple layouts and screens. We have used this in my office to, for example, create a configuration wizard of sorts. The idea is that hitting back should simply exit the wizard, and there are "Back" and "Next" buttons on the screen itself to provide navigation. Thus, even if you are on the third screen of the wizard, you have not created any additional Activities, so hitting the back button (hard button) will take you out of the "Wizard Activity" and back to the "Menu Activity".

Further, the behavior of the back button can be overridden by an application of they so choose. It simply calls a method named onBackPressed(), which performs the default behavior of going backwards on the Activity stack. However, if there is an overridden implementation of onBackPressed() in the current Activity, that will be executed instead.

So to sum up: the idea that the back button goes back to the previous "screen" is not guaranteed at all. The hard back button deals with Activities only, which are often "screens" to the user, but aren't necessarily, and are in no way required to be. There is no concept of "go back one screen" unless the app you are using says there is, but that functionality is still not guaranteed to be provided by the back button itself.

Further reading:

  • Activity and Task Design
  • Activity documentation
 
 
1
 
vote

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

 

If an app doesn't take you to the previous screen when you hit Back, there's nothing you or Android can do about it. You could ask the app's developer to implement it but that's about it.

 
 

Связанный проблема

5  Как я могу группировать приложения вместе в представлении меню?  ( How can i group apps together in the menu view ) 
Просмотр меню телефона перечислены все приложения, которые я установил. все из них. Телефон пришел предварительно установлен с 2,5 страницами приложений, ...

0  Взломайте браузер ICS для восстановления «кнопка меню экспозирует поле URL»  ( Hack ics browser to restore menu button exposes url field ) 
Я только что получил Galaxy S3, и я, наконец, вынужден противостоять аспекту ICS, которые я ненавидел с момента, когда он появился в моем xoom: тот факт, что ...

3  Как я могу организовать значки вручную в меню приложения?  ( How do i arrange the icons manually in the app menu ) 
Я использую MicroMax Canvas 2 A110 с Android ICS 4.0.4 . Я установил несколько приложений, которые сортируются случайным образом (или, возможно, в алфавист...

1  Как сделать меню Slide в 3D?  ( How to make menu slide in 3d ) 
Я видел это здесь: http: / /theunlockr.com/2011/04/12/android-101-how-to-scan-use-a-qr-code/ Смотреть видео, и вы увидите. Я хочу знать, как создать это...

0  Предварительный просмотр видео USB  ( Usb video preview ) 
После оцифровки все мои видеозаписи моей семьи, я сейчас ищу способ распространения оказанных видео в семье. Я бы предпочел бы классический DVD или Bluray с м...

12  Как имитация кнопки меню на Android 6?  ( How do i simulate menu button on android 6 ) 
Я использую Samsung Galaxy S7. Долгожимое нажатие недавней кнопки не сможет симулировать кнопку меню, а активирует режим разделенного экрана. Длительное нажат...

2  Как автоматически организовать значки в меню приложения?  ( How do i auto arrange icons in the app menu ) 
Мое устройство является Samsung Galaxy Ace / Cooper. Он работает на Froyo. Я хочу автоматически организовать значки в меню приложения. Есть ли способ сделать ...

0  Не в состоянии получить доступ к меню сервиса на моей Galaxy S3  ( Not able to access the service menu on my galaxy s3 ) 
У меня есть Samsung Galaxy S3 из Us Cellurgular , и я пытаюсь использовать его на другом носителе. Я добавил новую SIM-карту, и я попробовал все возможные ва...

3  Навигация Android: Как вернуться на предыдущий экран?  ( Navigating android how to go back to previous screen ) 
Я хотел бы знать, как вернуться на предыдущий экран на Android. Не просто вернуться назад. Я обычно нажимаю кнопку «Назад» на смартфоне, но часто это просто с...

2  Добавьте приложение на открытый с меню  ( Add an application to the open with menu ) 
Я использую Samsung Note II бегущий желе Bean 4.1.2. Я хотел бы добавить приложение на открытый список. Я скачал приложение для редактирования фотографий. Н...