问题标签 [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 回答
888 浏览

android - 使用 FLAG_ACTIVITY_NEW_TASK 将现有任务置于前面

android文档FLAG_ACTIVITY_NEW_TASK说:

使用此标志时,如果您现在正在启动的 Activity 已经在运行任务,则不会启动新的 Activity;相反,当前任务将简单地以其上次所处的状态被带到屏幕的前面。

我做了一个演示来实现这个,有两个应用程序:A和B。A包含活动A1,B包含活动B1,B2。

我按照以下步骤操作:Home Screen(Application A icon) --> A1 (FLAG_ACTIVITY_NEW_TASK to start B1)--> B1 -->B2 --> Home Screen(Application B icon)--> 据我了解,单击启动器中的应用程序 B 图标以启动 Activity B1 将使用FLAG_ACTIVITY_NEW_TASK,对吗?所以它应该把之前启动的任务放在前面,但不幸的是,一个新的活动 B1 开始了,B 任务堆栈是这样的:(底部)B1 B2 B1。

当我单击启动器中的应用程序 B 图标时,如何让现有任务显示在前面

0 投票
2 回答
304 浏览

android - 如何完成一项活动并返回不同的位置?

我的应用程序实现了一个涉及 3-4 个活动的操作。此流程的入口点可以来自应用程序中的不同活动。(HomeActivity,各种displayActivity)。一旦最后一个活动成功完成,我想返回开始活动。

有最佳实践方法吗?谢谢你。

0 投票
1 回答
920 浏览

android - 带有 DialogFragments 的向导:为什么需要两次单击后退按钮才能从 Backstack 中弹出 Dialog?

我想将一系列 DialogFragments 显示为向导。我用以下代码展示第一个:

要从第一个对话框切换到第二个对话框,我使用以下代码:

OnClickListener这段代码在ConnectDialog一个子类中调用DialogFragment

当显示第二个对话框时,必须单击两次硬件后退按钮才能看到第一个对话框。我希望,在单击一个后退按钮后再次显示第一个对话框!我怎样才能做到这一点?

0 投票
3 回答
579 浏览

android - (活动再创造):如何处理建立在无效数据上的 backstack?

在以下情况下该怎么做:
1. 应用程序使用了复杂的活动和片段结构
2. 我返回到同时已(部分或未)销毁的后台应用程序
3. 它使我返回到最后一个屏幕,该屏幕很深在工作流程中
4. 我需要它返回到第一个屏幕以重新初始化事物(因为它很复杂并且需要用户交互)

只是为了清楚:
我问的是如何处理现有的活动堆栈和片段遇到这种情况
- 采取的行动:启动 Intent?刚结束?对持有的子结构做些什么然后完成?
- 何时执行 - 立即在 Activity.onCreate片段的空构造函数?或者活动是否足够?
- 如何最好地检测它:到目前为止,我想出的只是:绑定到一个包含必要数据/连接的服务,然后询问它是否已被初始化。但是绑定在 onResume 之后完成。

我不是在问任何与 UI 相关的事情。
我不是要一个只适用于一个特定应用程序的解决方案,所以不要要求代码。
如果您认为这个问题含糊不清,这里有一个单句版本:“如何解除堆栈并返回到第一个屏幕?

有关详细信息(至少与相关),请参阅https://stackoverflow .com/questions/14650342

0 投票
2 回答
138 浏览

android - 从活动控制返回位置

我有一个包含三个活动的应用程序。

  • Activity1收集数据(来自体育比赛玩家的数字)
  • Activity2TextViews根据来自的数据可点击的显示Activity1Activity2查找输入的数字Activity1并显示与球员姓名的链接)。
  • Activity3当用户单击其中一个链接时,显示WebView来自数据的Activity1(它从体育网站加载玩家的网页)。

我想控制活动标签中“返回”链接的操作,以一直返回Activity1fromActivity3而不是 go to Activity2。我假设有它的方法,但我无法在网上或提示中找到它。

0 投票
1 回答
315 浏览

android - 在 Android 上进行 oauth 登录后管理后台堆栈

我正在 Android 中实现 oauth 登录,但我被困在一个点上。我需要重定向到本机浏览器以启动登录(而不是使用我自己的嵌入式 WebView),但这会导致后台堆栈出现问题。我的目标很简单:在重定向后返回我的活动,在后台堆栈中没有本机浏览器的痕迹。这是迄今为止我最接近的:

要从我的活动中启动登录,我使用:

我有一个单独的活动来接收返回重定向并处理其余的登录过程。我真的不在乎它是否是一个单独的活动,这只是我目前的解决方案。在它的清单中我设置了android:noHistory="true". 完成登录过程后,我尝试使用如下代码返回第一个活动:

但是,这最终会创建原始活动的第二个副本,当我按下它时,它会返回到第一个副本。换句话说,它似乎并不尊重FLAG_ACTIVITY_CLEAR_TOP。尽管我进行了所有的搜索,但我是否错过了一些简单的让它工作的东西?或者我还有其他方法可以解决所有这些问题吗?

编辑:事实证明,问题源于浏览器是在单独的任务中启动的。来自一些 Android 文档:

...如果您的应用程序发出打开 Android 浏览器的意图,则其活动不会与您的应用程序放在同一任务中。相反,要么为浏览器启动一个新任务,要么,如果浏览器已经有一个任务在后台运行,则该任务被提出来处理新的意图。

如果我将原始活动的启动模式设置为singleTask正确地将其带到前台而不是创建新副本,但会出现新问题。浏览器现在位于我所有活动的后台,所以现在它似乎FLAG_ACTIVITY_NO_HISTORY没有受到尊重。我不确定这是否让我更接近正确的解决方案......

编辑 2:更正:如果浏览器在我启动之前没有运行,那么一切正常。但是,如果它已经在运行FLAG_ACTIVITY_NO_HISTORY似乎对它没有影响。

0 投票
4 回答
92533 浏览

android - 如何从后台弹出片段

我有一个活动 A,它调用片段 Bf,它调用片段 Cf。我希望在调用 Cf 时将 Bf 放在后台堆栈中,以便用户可以导航回它。但是,如果在 Cf 中按下特定按钮,我希望将 Bf 从后台堆栈中删除。这可能吗?

我看到有一个 popBackStack() 函数。但是,我对这将如何工作感到有些困惑。使用此功能是否安全?是否有可能在后台堆栈的 Bf 之后插入来自不同应用程序的活动?

另外,有什么方法可以改变 backstack 上片段的 savedInstanceState 吗?

我只是不知道如何使用模拟器对 backstack 进行健壮的测试。

0 投票
1 回答
363 浏览

android - 活动启动模式

这是我在清单中的活动标签:

我想要完成的是:

活动_A ---> 活动_B ---> 活动_C ---> 活动_B

当我从 Activity_B 转到 Activity_C 时,我不想完成 Activity_B。

但是当我单击 Activity_C 中的一个按钮时,我想启动 Activity_B,它必须重新创建(由于 Activity_C 中的某些操作而更改了数据),并且必须完成 backstack 中的前一个 Activity_B 实例。

android:launchMode="singleTask"它几乎按要求工作,但没有重新创建 Activity_B。

android:launchMode="singleTop"重新创建 Activity_B 但不会从后台堆栈中删除其先前的实例

android:launchMode="singleInstance"这与singleTask

0 投票
1 回答
3584 浏览

android - 如何从最近的导出活动中排除?

我有一个可以从其他应用程序调用的导出活动的应用程序(特别是共享操作 - android.intent.action.SEND

如何从最近的活动中排除导出的活动?

我看不到设置FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS标志的方法,因为它是从外部调用的。

我想这样做的原因是因为这个意图成为我的活动堆栈中的最后一个,因此当点击最近时,一个文件被重新共享而不是主要活动弹出。

注意android:launchMode="singleTask"解决特定情况下的问题,仅在另一个活动位于顶部的情况下。但是,这不是一个选项,因为它会破坏用户任务流程,并且如果根目录下没有其他应用程序的活动,它就不起作用。

0 投票
1 回答
2991 浏览

android - Backstack 上的 NullpointerException

我使用 API 级别 16,在我尝试替换一些选项卡下方的一些片段,其中已经是一些片段。我真的找不到原因,但有时我会收到这样的异常:

我没有添加空片段,并且在那里运行的代码很简单:

如果您愿意,请查看 Grepcode,因为发生异常:http: //grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.1.2_r1/android/应用程序/BackStackRecord.java#604

我没有在那里使用任何动画。