导航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.

 
 

相关问题

0  从工作电话恢复内部数据,但屏幕破碎,没有开发人员模式并锁定  ( Recover internal data from a working phone but with broken screen no developer ) 
我不知道这是否是正确的SO社区。 我有一个三星星系,屏幕破碎,但只是屏幕,而不是移动。 我想只是为了从内部存储器中提取所有数据。 我们已经尝试了来自互联网论坛的大量软件和解决方案,但所有这些都需要开发人员模式或未锁定的设备。 我没有开发人员模式,我无法解锁,因为我在屏幕中看到任何内容。即使我们尝试插上外部鼠标,并尝试...

6  当我的手机插入但空闲时为什么屏幕上亮起?  ( Why does the screen come on when my phone is plugged in but idle ) 
有时当我的Nexus屏幕插入屏幕关闭时,屏幕上的(显示锁定屏幕)看似随意打开(显示锁定屏幕),我有"保持唤醒" 开发选项打开,因此它保持开启到我手动再次关闭它。 我怀疑一些应用程序是不恰当的获取 qualire_causes_wakeup wakelock 。有没有办法获得Wakelock活动的日志或使用其他方式调试...

5  三星Galaxy S5完全充电时打开,永远不会关闭  ( Samsung galaxy s5 turns on when fully charged and never turns off ) 
我只是从三星Galaxy S4到S5的"升级" 。两者都使用类似的Android 4.4.2 TouchWiz软件,但新一个有一些奇怪的行为。我设置了智能屏幕睡眠(或超时,如何调用)到上的并将其放到一分钟内。我确实有开发者选项显示,但没有检查"保持清醒" 。 我将描述一些情况: 手机拔掉,解锁 - > 1分...

2  为什么我的Galaxy S4屏幕不显示任何东西?  ( Why doesnt my galaxy s4 screen display anything ) 
我的三星Galaxy S4将突然不会在显示屏上显示任何内容。它振动,诸如如果一切,但显示器有效。有时它会闪存一些看起来有点像Android家伙的一部分,但它闪烁这么快,我无法确定它是什么或者它是否只闪烁。 我已经尝试了顶级解决方案,我的谷歌搜索导致我尝试: - 介绍电池并保持音量向上和主按钮10秒钟。 - 介绍...

3  更改空闲屏幕  ( Change idle screen ) 
有些方法可以改变"扫描玻璃" 空闲屏幕(你看到手机从关闭屏幕返回时看到的屏幕)? 我喜欢"扫描玻璃" 屏幕,但已经见过其他人。例如。屏幕类似于"电话呼叫" 屏幕 - 需要刷新到任一侧的两个选项(答案,拒绝)。 旁边:谜题拼图的想法,电子邮件等很棒! ...

1  屏幕在使用TECNO F7呼叫期间关闭  ( Screen turns off during call with tecno f7 ) 
为什么我的屏幕在通话期间会关闭?即使我按电源按钮也没有打开。呼叫后它只回来。 ...

2  为什么我的EVO Android手机屏幕继续开启?  ( Why does my evo android phone screen keep turning on ) 
我有一个htc evo,当突然突然出现屏幕上时,我可以坐在一边没有什么。我试着把它关掉,但它一直在扭转 - 有时之后,有时在几分钟后。如果我只是离开它,它就不会自行关闭,因为如果我手动打开它,但没有输入密码。这杀死了我已经可怕的电池寿命! 我已经杀了几乎所有的后台进程,除了一些看起来很重要的HTC。 我还关闭了应用刷...

5  关闭屏幕没有Android睡觉  ( Turn screen off without android sleeping ) 
是否有任何方法可以在不制作Android睡眠状态的情况下快速切换屏幕? 例如,我有时喜欢在睡觉时使用平静的应用程序。但它一直保持屏幕。当我只使用该应用程序10分钟时,它会保持屏幕;但是,如果我睡了几个小时,我希望应用程序继续运行(发出声音)并关闭屏幕。 如何完成? ...

1  如何使用屏幕镜像。屏幕镜像使用哪些网络协议?  ( How to use screen mirroring what network protocol does screen mirroring use ) 
我有一个三星Galaxy Siii(GT-I9300),支持屏幕镜像。我想要 使用此功能与Samsung Galaxy S Plus(GT-I9001)运行共享我的屏幕 Android Gingerbread或Windows 7或Vista Computer或Sony Bravia TV。然而, 当我尝试通过单击激活...

8  避免电力消耗  ( Avoiding power drain ) 
我刚刚沉迷于这个周末,我注意到电池上最大的功耗来自显示屏。我失明了,所以我真的不需要能够看到它。有没有办法让我完全把它完全关闭,就像我在其他设备上一样? ...

2  当我碰到手机时,屏幕打开  ( Screen turns on when i bump phone ) 
我有一个Moto E 2015 LTE(萨福尼亚)运行Lineage OS,Android 7.1.1。每次我碰到手机时,屏幕就会打开告诉我时间。我找不到打开它的设置。我也找不到Stock Android中的这种环境。 是否有人知道是否有一个隐藏的设置在某处来控制这个?如果这是它所花款的话,我愿意建立自己的血统ro...

5  使用Visual语音邮件时如何禁用屏幕?  ( How to disable screen when using visual voicemail ) 
任何人都知道在收听语音邮件时让屏幕自动关闭的方法?我习惯了我的HTC EVO和HTC Hero的功能,接近传感器自动检测到我的脸部并关闭屏幕。似乎与视觉语音邮件应用程序似乎没有发生,这很烦人。 在多个场合,我意外删除并称呼给我给我留言给我的人,给我的印象我有胖脸颊。 :( ...

0  可以随时显示在我的Galaxy A5(2017)上显示屏幕烧伤?  ( Can always on display on my galaxy a5 2017 cause screen burn in ) 
自从我买了我的三星Galaxy A5(2017)以来,我一直在使用它的始终开启的显示功能,它显示一个未读通知图标的时钟或日历,或屏幕上的四个预安装图像中的一个"关" 状态(例如锁定)。 我正在使用图像选项,因为您可以在上面的屏幕截图上看到。最近我听说过三星手机因易于筛选而易听,因为他们的AMOLED显示器。是我...

0  如何备份三星S5数据。  ( How do i back up my samsung s5 data ) 
我有三星S5,没有理由屏幕已经停止工作,它完全黑色灯仍然活跃。我已经把它带到了移动零售商,他们试图通过拿出电池等来重置它,但没有快乐,它没有解决问题。他们说它需要进行维修。但我在手机上有照片,我不想松开。我被商店建议下载Kies到我的膝盖上面,然后我可以备份我的手机数据。立即下载了软件并插入了我的手机,我仍然留下了用...

0  同时显示多个应用程序屏幕  ( Display multiple app screens at the same time ) 
是否可以在屏幕上显示多个应用程序? 通常,Apps加载全屏和全屏应用程序之间的应用程序切换交换机。应用程序是否可以仅使用屏幕的一半,另一个应用程序使用另一半? ...




© 2021 it.wenda123.org All Rights Reserved. 问答之家 版权所有


Licensed under cc by-sa 3.0 with attribution required.