Навигация 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.

 
 

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

8  Избегая слива энергии  ( Avoiding power drain ) 
Я только что получил Samsung побаловать в эти выходные, и я заметил, что самый большой источник питания на батарею с дисплея. Я слепой, поэтому мне действител...

5  Как отключить экран при использовании визуальной голосовой почты?  ( How to disable screen when using visual voicemail ) 
Кто-нибудь знает о способе получения экрана автоматически выключаться при прослушивании голосовой почты? Я привык к функции моим HTC EVO и HTC Hero Hote, где ...

2  Почему мой экран телефона EVO Android продолжает вращаться?  ( Why does my evo android phone screen keep turning on ) 
У меня есть HTC EVO, и я могу сидеть без того, ничего не делая, когда вдруг экран включается и остается включенным. Я пытаюсь выключить его, но он продолжает ...

2  Экран включается, когда я ударил телефон  ( Screen turns on when i bump phone ) 
У меня есть Moto E 2015 LTE (Surnia), работающая на LTE LTE (Surnia) Runge Lineage OS, Android 7.1.1. Каждый раз, когда я поднимаю телефон, экран включается, ...

5  Выключить экран без сна Android  ( Turn screen off without android sleeping ) 
Есть ли способ быстро переключить экран, не делая Android Sleep? Например, я иногда люблю использовать спокойное приложение, когда я сплю. Но это держит экр...

0  Восстановить внутренние данные с рабочего телефона, но со сломанным экраном, нет режима разработчика и заблокирован  ( Recover internal data from a working phone but with broken screen no developer ) 
Я не знаю, если это правильно, так что сообщество, чтобы спросить это. У меня есть Samsung Galaxy с сломанным экраном, но просто экран, а не мобильный. Я ...

0  Отображение нескольких экранов приложений одновременно  ( Display multiple app screens at the same time ) 
Можно ли отображать несколько приложений на экране? Обычно, приложения загружают полноэкранные экраны, а коммутаторы коммутации приложений между полноэкранн...

1  Как использовать зеркалирование экрана. Какой сетевой протокол использует экран зеркалирования?  ( How to use screen mirroring what network protocol does screen mirroring use ) 
У меня есть Samsung Galaxy SIII (GT-I9300), которая поддерживает зеркалирование экрана. Я хотел бы Чтобы использовать эту функцию, чтобы поделиться своим экра...

6  Почему экран включается, когда мой телефон подключен, но простаивает?  ( Why does the screen come on when my phone is plugged in but idle ) 
Иногда, когда мой Nexus One подключен к экрану выключен, экран становится включенным (показывая экран блокировки), казалось бы, случайным образом, и у меня ес...

0  Всегда можно-на дисплее на моей Galaxy A5 (2017) вызывают ожог экрана?  ( Can always on display on my galaxy a5 2017 cause screen burn in ) 
С тех пор, как я купил My Samsung Galaxy A5 (2017), я использовал свою функцию всегда на дисплее, которая отображает часы или календарь с нечитающими значками...

0  Как создать резервную копию данных My Samsung S5  ( How do i back up my samsung s5 data ) 
У меня есть Samsung S5, и без причины, по которой экран перестал работать, его совершенно черные огни все еще активны. Я взял его на мобильный ритейлер, и они...

1  Экран выключается во время вызова с Tecno F7  ( Screen turns off during call with tecno f7 ) 
Почему мой экран уходит во время звонка? Это не включается, даже когда я нажимаю кнопку питания. Это только возвращается после вызова. ...

3  Изменить проступок экрана  ( Change idle screen ) 
Есть ли какой-то способ изменить экран «Sweep Glass» (экран, который вы видите, когда телефон возвращается от выключения экрана)? Мне нравится экран "развер...

2  Почему мой экран Galaxy S4 ничего не отображает?  ( Why doesnt my galaxy s4 screen display anything ) 
Моя Samsung Galaxy S4 внезапно не покажет ничего на дисплее. Это вибрирует и например, все, как все, но дисплей работает. Иногда это будет мигать что-то, что ...

5  Samsung Galaxy S5 включается, когда полностью заряжается и никогда не выключается  ( Samsung galaxy s5 turns on when fully charged and never turns off ) 
Я просто «модернизировал» из Samsung Galaxy S4 к S5. Оба используют аналогичные Android 4.4.2 SconsWiz Software, но новое имеет нечетное поведение. Я устанавл...

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

8  Избегая слива энергии 
5  Как отключить экран при использовании визуальной голосовой почты? 
2  Почему мой экран телефона EVO Android продолжает вращаться? 
2  Экран включается, когда я ударил телефон 
5  Выключить экран без сна Android 
0  Восстановить внутренние данные с рабочего телефона, но со сломанным экраном, нет режима разработчика и заблокирован 
0  Отображение нескольких экранов приложений одновременно 
1  Как использовать зеркалирование экрана. Какой сетевой протокол использует экран зеркалирования? 
6  Почему экран включается, когда мой телефон подключен, но простаивает? 
0  Всегда можно-на дисплее на моей Galaxy A5 (2017) вызывают ожог экрана? 
0  Как создать резервную копию данных My Samsung S5 
1  Экран выключается во время вызова с Tecno F7 
3  Изменить проступок экрана 
2  Почему мой экран Galaxy S4 ничего не отображает? 
5  Samsung Galaxy S5 включается, когда полностью заряжается и никогда не выключается