问题标签 [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.

0 投票
1 回答
295 浏览

android - 如果应用程序已恢复,如何从活动中获取结果

问题标题可能不够清楚。它解决了应用程序在资源不足的情况下被Android“杀死”后,将结果从子活动传递给父活动的问题,然后在用户返回该应用程序时自动恢复。

假设活动 A 使用 调用活动startActivityForResult()B。当应用程序执行上下文在 B 中时,应用程序进入后台并在一段时间后被系统卸载。稍后,用户切换回应用程序,并且活动 B 恢复没有问题。唯一的问题是 A 目前在 Android 的后台堆栈中不存在,并且当用户关闭 B(finish()伴随适当的setResult()调用)时,A 不会收到结果。A不是onActivityResult()事件,而是onCreate()从启动链接收和其他事件。

所以问题是如何在“杀死”状态后恢复的应用程序中的活动之间传递结果?

更新:

尽管@fedepaol 提供了一个指向谷歌群组的链接,有人在其中写了onActivityResult应该在有问题的情况下调用的链接,但我无法让它工作。我还应该注意,谷歌群组中该问题的 OP 也没有解决问题。我也在 SO 上发现了一个类似的问题 - onActivityResult 在进程被杀死后不被调用- 也没有解决方案。

我仔细检查了我的代码,不明白为什么它不起作用。在正常情况下,会调用被覆盖的方法。如果后台的activity一一还原,则不会。

0 投票
2 回答
764 浏览

android - 根据指南处理“向上”导航的正确方法

我完全同意下面的导航

在此处输入图像描述

想象一下 Book 详细信息是在 BookDetailActivity 的不同实例中创建的。

book2详细信息中按下之前的堆栈是:

  • BookDetailActivity (Book 2 - 你在这里)
  • BookDetailActivity (书 1)
  • 全部图书活动

如果我遵循指南,我将使用:

但是这段代码最大的问题是BookDetailActivity(Book 1)还活着!

在“向上”之后按返回按钮将显示第 1 册的详细信息。

我怎样才能杀死原始和我按下的活动BookDetailActivity之间的所有内容?AllBooksActivity

0 投票
0 回答
995 浏览

android - 按下后退按钮时调用 onResume()

当我按下后退按钮时发生了一件奇怪的事情,同样ActivityonResume()方法被调用了。

Activity这是否意味着堆栈中有不止一个这样的实例?

有人可以告诉我发生了什么吗?

编辑:

这从我按后退时开始

当我再次按下时

这取决于recipientlist我通过意图从上一个活动中获取的大小。如果它的大小为 1,则返回工作正常,如果大小为 2,则返回需要两次连续按下才能返回上一个活动,因为已显示日志对于大小 = 3 的情况。getconversation 是当我签入我的 onResume() 时调用的方法,该列表不为空

0 投票
0 回答
413 浏览

android - 不允许将 FragmentTransaction 添加到 backstack

我正在尝试将片段添加到后台堆栈,但它不起作用,我不断收到:java.lang.IllegalStateException: This FragmentTransaction is not allowed to be added to the back stack.

我正在使用 actionbar sherlock,在我的主要活动中,我收听标签

0 投票
0 回答
850 浏览

android - Android - 使用从左向右滑动返回

我对 Fragments API 有点陌生。我正在构建一个应用程序,允许用户在信息树中向上/向下导航。为了便于导航,我希望允许用户从左向右滑动以导航回页面。

我最初的想法是尝试使用 ViewPager 并在每次我想钻入时附加一个新的片段,并在每次用户从左到右滑动或按回时自动删除最后一个片段。但是,我无法理解这与后台堆栈的交互方式。这种行为会与 FragmentManager 完全分开,还是有办法将 Fragment 附加到 FragmentPagerAdapter 作为使用 FragmentManager 的一部分?

0 投票
0 回答
101 浏览

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 实现的整个想法是设置应用程序的好解决方案吗?

感谢您的任何意见!

0 投票
1 回答
550 浏览

android - 无法让片段回栈工作,我做错了什么?

我有一个布局由两个片段组成的应用程序。左侧一个菜单片段,右侧一个内容片段。当用户按下菜单片段中的菜单项时,内容片段会发生变化。

在小型设备(电话)上,我最初只显示菜单片段。当用户按下菜单项时,整个菜单片段被内容片段替换。然而,当用户想要通过按后退按钮返回菜单时,应用程序将关闭(好像后退堆栈中没有任何内容)。

以下是我的代码的修剪版本,我做错了什么?

0 投票
2 回答
854 浏览

android - 从 Back Stack 获取活动保持历史记录,而不是创建新的

我正在尝试做这样的事情:

我有一些任务活动:

A->B->C

从 C 我想从堆栈中调用 B 的实例并保留当前历史记录。所以奇怪的结果是这样的:

A->B->C->B

其中 B 和 B 是相同的实例,但可以使用“后退”按钮向后导航。

可能吗?

可能被骗: Android任务历史堆栈:可以有“重复活动”?

0 投票
3 回答
100829 浏览

android - Android:片段 backStack

我试图在调用方法时加载新片段。此方法创建一个新片段并“替换”另一个片段:

这工作正常,直到我回去。最后一个片段,当我回去时应该删除。在我要对活动实施方法之前

要删除最后一个片段,我想知道我是否正确处理了片段更改。看起来我在这里遗漏了一些东西..

0 投票
1 回答
2635 浏览

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 内存的引用。

我有三个问题。

  1. 为什么不同设备的内存/GC行为不同?

  2. 在 S3 上,操作系统最终会回来并 GC 搁浅的活动 B 对象(换句话说,我应该不用担心它,因为 Android 会在崩溃前清理它)?

  3. 如果不是,那么 Thread 和 AudioManager 引用来自哪里,我将如何清除它们?

感谢任何有经验的“泄密者”!