问题标签 [back-stack]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - 如果应用程序已恢复,如何从活动中获取结果
问题标题可能不够清楚。它解决了应用程序在资源不足的情况下被Android“杀死”后,将结果从子活动传递给父活动的问题,然后在用户返回该应用程序时自动恢复。
假设活动 A 使用 调用活动startActivityForResult()
B。当应用程序执行上下文在 B 中时,应用程序进入后台并在一段时间后被系统卸载。稍后,用户切换回应用程序,并且活动 B 恢复没有问题。唯一的问题是 A 目前在 Android 的后台堆栈中不存在,并且当用户关闭 B(finish()
伴随适当的setResult()
调用)时,A 不会收到结果。A不是onActivityResult()
事件,而是onCreate()
从启动链接收和其他事件。
所以问题是如何在“杀死”状态后恢复的应用程序中的活动之间传递结果?
更新:
尽管@fedepaol 提供了一个指向谷歌群组的链接,有人在其中写了onActivityResult
应该在有问题的情况下调用的链接,但我无法让它工作。我还应该注意,谷歌群组中该问题的 OP 也没有解决问题。我也在 SO 上发现了一个类似的问题 - onActivityResult 在进程被杀死后不被调用- 也没有解决方案。
我仔细检查了我的代码,不明白为什么它不起作用。在正常情况下,会调用被覆盖的方法。如果后台的activity一一还原,则不会。
android - 根据指南处理“向上”导航的正确方法
我完全同意下面的导航
想象一下 Book 详细信息是在 BookDetailActivity 的不同实例中创建的。
book2详细信息中按下之前的堆栈是:
- BookDetailActivity (Book 2 - 你在这里)
- BookDetailActivity (书 1)
- 全部图书活动
如果我遵循指南,我将使用:
但是这段代码最大的问题是BookDetailActivity(Book 1)还活着!
在“向上”之后按返回按钮将显示第 1 册的详细信息。
我怎样才能杀死原始和我按下的活动BookDetailActivity
之间的所有内容?AllBooksActivity
android - 按下后退按钮时调用 onResume()
当我按下后退按钮时发生了一件奇怪的事情,同样Activity
的onResume()
方法被调用了。
Activity
这是否意味着堆栈中有不止一个这样的实例?
有人可以告诉我发生了什么吗?
编辑:
这从我按后退时开始
当我再次按下时
这取决于recipientlist
我通过意图从上一个活动中获取的大小。如果它的大小为 1,则返回工作正常,如果大小为 2,则返回需要两次连续按下才能返回上一个活动,因为已显示日志对于大小 = 3 的情况。getconversation 是当我签入我的 onResume() 时调用的方法,该列表不为空
android - 不允许将 FragmentTransaction 添加到 backstack
我正在尝试将片段添加到后台堆栈,但它不起作用,我不断收到:java.lang.IllegalStateException: This FragmentTransaction is not allowed to be added to the back stack.
我正在使用 actionbar sherlock,在我的主要活动中,我收听标签
android - Android - 使用从左向右滑动返回
我对 Fragments API 有点陌生。我正在构建一个应用程序,允许用户在信息树中向上/向下导航。为了便于导航,我希望允许用户从左向右滑动以导航回页面。
我最初的想法是尝试使用 ViewPager 并在每次我想钻入时附加一个新的片段,并在每次用户从左到右滑动或按回时自动删除最后一个片段。但是,我无法理解这与后台堆栈的交互方式。这种行为会与 FragmentManager 完全分开,还是有办法将 Fragment 附加到 FragmentPagerAdapter 作为使用 FragmentManager 的一部分?
android - 如何在 Android 中保存类似于 BackStack 的屏幕状态?
我只是想知道一些我需要一些建议的android ui方面!可能是,到目前为止我的想法并不是最好的......
基本上我正在开发一个应用程序,它在播放器(主屏幕)中播放流。用户可以在第二个屏幕(标签栏屏幕)中选择流,在那里他可以在三个不同的列表之间切换,每个列表都在一个标签中,每个 tabbarclick 都会启动一个新活动(我没有使用一个ActionBar
或 sth,我刚刚创建了一个自己的 UI 元素,由三个图标组成,当前一个被选中,另外两个启动一个新的 Activity):
ListViewActivity1
:动态创建 ViewFlipper 与来自数据库的嵌套 ListViews (fe country->state->city..)ListViewActivity2
: 带有收藏夹的简单 ListViewListViewActivity1
ListViewActivity3
: 带有用户生成内容的简单 ListView
到目前为止,它工作得很好,但我开始挣扎......每次用户再次进入标签栏屏幕时,我都希望他能准确地回到ListView
他所在的位置。所以基本上我正在寻找一种方法来存储不同的屏幕,如果用户离开它们。我遇到了 onSaveInstanceState(Bundle savedInstanceState)
,但这并不真正符合我的需求。这ListViewActivity 1
是一个非常复杂的列表,有时多达六个级别,我真的不想在一个savedInstanceState
!还有其他方法吗?
实际上,如果我回到BackStack
,这真的可以像我想要的那样保存不同的状态。所以有可能,我只是找不到这样的东西..
那么,问题1:有没有办法像这样保存视图BackStack
?
问题 2:UI 实现的整个想法是设置应用程序的好解决方案吗?
感谢您的任何意见!
android - 无法让片段回栈工作,我做错了什么?
我有一个布局由两个片段组成的应用程序。左侧一个菜单片段,右侧一个内容片段。当用户按下菜单片段中的菜单项时,内容片段会发生变化。
在小型设备(电话)上,我最初只显示菜单片段。当用户按下菜单项时,整个菜单片段被内容片段替换。然而,当用户想要通过按后退按钮返回菜单时,应用程序将关闭(好像后退堆栈中没有任何内容)。
以下是我的代码的修剪版本,我做错了什么?
android - 从 Back Stack 获取活动保持历史记录,而不是创建新的
我正在尝试做这样的事情:
我有一些任务活动:
A->B->C
从 C 我想从堆栈中调用 B 的实例并保留当前历史记录。所以奇怪的结果是这样的:
A->B->C->B
其中 B 和 B 是相同的实例,但可以使用“后退”按钮向后导航。
可能吗?
可能被骗: Android任务历史堆栈:可以有“重复活动”?
android - Android:片段 backStack
我试图在调用方法时加载新片段。此方法创建一个新片段并“替换”另一个片段:
这工作正常,直到我回去。最后一个片段,当我回去时应该删除。在我要对活动实施方法之前
要删除最后一个片段,我想知道我是否正确处理了片段更改。看起来我在这里遗漏了一些东西..
android - 调用 finish() 不会清除对 Activity 的内存引用
在我的应用程序的简化版本中,我有两个活动,A 和 B。活动 A 启动 B,在完成一些工作后 B 调用完成()。在大多数设备上使用内存分析器工具(运行 4.2 的 Galaxy Nexus、运行 4.0.4 的 Droid 4 和运行 2.3.4 的 Droid 2)显示没有活动 B 的痕迹,这正是我的预期。
但是在运行 4.1.1 的三星 S3 上,MAT 显示活动 B 对象仍然存在,这是由于到以下 GC 根的路径(不包括弱/软引用):
每次我启动和停止活动 B 时,MAT 都会显示活动 B 的内存占用的另一个实例。我打开/关闭活动 B 的次数越多,logcat 中报告的内存占用就越大。通过 MAT 强制 GC 不会删除对活动 B 内存的引用。
我有三个问题。
为什么不同设备的内存/GC行为不同?
在 S3 上,操作系统最终会回来并 GC 搁浅的活动 B 对象(换句话说,我应该不用担心它,因为 Android 会在崩溃前清理它)?
如果不是,那么 Thread 和 AudioManager 引用来自哪里,我将如何清除它们?
感谢任何有经验的“泄密者”!