问题标签 [fragment-backstack]

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 回答
299 浏览

android - Android + 使用片段 xml 防止 addToBackStack?

我在横向模式中有 2 个片段,而在纵向模式中有 1 个片段。我正在通过 xml 方法加载所述片段。无论如何,我正在检查第一个活动中是否存在第二个片段,并启动第二个片段的活动或直接在第二个片段上调用方法。一切正常,但是,当用户最初旋转(创建两个片段)然后旋转回来时,我对第二个片段的检查现在不为空,并且在它被添加到后台堆栈时破坏了逻辑。

如何解决这个问题?我是否需要从 onPause() 的历史堆栈中删除片段?或者可能会以某种方式阻止第二个片段被添加到后台堆栈中。

第一活动:

SecondFragment:你推荐这个吗?

0 投票
3 回答
1603 浏览

android - 当片段在屏幕上时如何收听

我需要的正是onResume特定片段的方法(因为它适用于活动)。我将片段(假设片段 A)添加到后堆栈,并从片段 A 打开另一个片段(片段 B)(再次添加到后堆栈)。我想在片段 B 关闭且片段 A 时更新工具栏再次出现在屏幕上。我希望onCreateView被调用,但是当我弹出片段 B 时它不会被调用。我还尝试向OnBackStackChangedListener片段 A 添加一个,但是当返回堆栈更改时,我无法跟踪屏幕上的哪个片段。

所以我的问题是当我回到片段 A 时如何onCreateView调用。如果这不是一个好习惯,我还能如何跟踪这个事件?

编辑

我正在用这段代码展示新的片段:

我应该以某种方式更改它以使其onCreateView被调用吗?由于我现有的片段 A 上添加了新的片段 B(当 B 在屏幕上时,我什至可以单击片段 A 中的按钮),当我弹出片段 B 时,片段 A 的情况没有任何变化。

0 投票
1 回答
115 浏览

android - RuntimeException 在一种情况下。NullExeption - getBackStackCount()

只有当我的应用程序关闭(为其他应用程序释放资源)并且当我再次打开它时,我才得到这个扩展。如果我自己关闭了应用程序,一切都会奏效。

这是我的活动:

MainFragment 扩展 BaseFragment....

和 BaseFragment:

如果需要

我添加了resetToolbarNavigation.......

0 投票
2 回答
7529 浏览

android - 防止同一片段多次堆叠 (addToBackStack)

我有一个Activity包含三个 Fragments 的片段,我们称它们为ABCFragment A在 Activity 中被调用onCreate()

并在按下某些按钮时被 Fragment BCaddToBackStack()替换,并且 FragmentTransaction 调用.

但是假设我连续调用Fragment B三次,我怎样才能防止它自己堆叠到它上面呢?同时我希望这成为可能:B调用 > C调用 > B调用 - 但是当我尝试返回时,我希望B只打开一次(C < B)而不是(B < C < B) . 所以基本上用新的 backStack 删除第一个 backStack。

0 投票
0 回答
82 浏览

android - 从后台堆栈中删除片段

在以下情况下,我想从 backstack 中删除片段

  1. 活动1-->片段1-->片段
  2. 活动1-->片段1-->活动2

在这两种情况下,后面都应该返回activity1跳过fragment1。我怎样才能实现这个。代码示例会有所帮助

0 投票
0 回答
794 浏览

android - 在后台堆栈中添加两次相同的片段?

这是我的问题。

我基本上正在处理一个片段,其中包含有关某个地方的一些信息,以及同一城市中所有其他地方的列表。通过单击列表中的一个元素,您可以访问具有与您单击的元素相关的信息的同一片段的另一个实例。

问题是,如果两个包含同一地点信息的片段包含在 backstack 中,则 backstack 不再起作用。

这就是我创建新片段的方式:

如果所有片段都使用不同的数据,它会完美运行。但是,如果我将一个片段添加到后台堆栈中,其中的数据已经在后台堆栈中的片段中使用,那么当我按下后退按钮访问它时,它将不会显示。

我该如何解决这个问题?如何管理片段及其精确副本存在于后台但需要区分的情况?

0 投票
0 回答
556 浏览

android - Android Fragment相互重叠并显示透明视图

我有一个带有片段容器布局的活动,在该布局中我加载了一个片段 A,它有一个列表视图(列表视图从 Web 加载数据)。现在单击列表视图项目我想显示详细视图。为此,我正在加载另一个片段 B,它是细节片段。现在首先我使用

但是使用替换删除包含列表视图的先前片段 A 并再次按下它会重新加载片段 A 的 onCreateView 方法及其列表视图数据。我想阻止它在后台再次加载片段 A(或向网络服务器发送调用)。我想保持片段 A 状态及其列表视图滚动位置。为此,我使用了第二个选项,即

如果我使用 add() 则片段 B 加载到片段 A 的顶部,并且片段 A 仍然可见。它显示两个片段相互重叠且透明。我还遇到了另一个解决方案,即使用 show() 和 hide() 方法。但我不认为这是实现这一目标的有效方法。任何人都可以提出一个有效的解决方案吗?

0 投票
3 回答
119 浏览

android - Android Fragments 和 backstack

我正在构建一个使用抽屉导航的 android 应用程序,它看起来和运行良好,除了我无法将当前视图(片段)添加到后堆栈以允许用户更轻松地导航应用程序。目前,后退按钮在按下时会退出应用程序。我在这里查看了各种问题,但没有一个有效。

这是我目前的尝试,不明白为什么它不起作用。

编辑

onbackPressed

0 投票
0 回答
92 浏览

android - 片段向后导航而不添加到后台堆栈

这是在一次采访中提出的。场景描述如下:

MainActivity(最初添加了 Fragment A。)。按下按钮时,它会转到片段 B,而不会将 A 添加到 backstack。在按下片段 B 中的按钮时,它会将“B”添加到后堆栈,然后转到片段 C。现在,在片段 C 中,我有一个按钮,我想通过该按钮直接导航到片段 A(未添加到回栈)。有没有办法做到这一点?

0 投票
2 回答
867 浏览

android - 管理android中的backstack

目前安卓应用的结构是

由于有一个侧面菜单,我可以直接访问产品 1,我当前的尝试是为每笔交易添加到后台,它的行为很奇怪

如果我这样进入:

流程是我进入首页后点击侧边菜单的product1,进入product1页面后点击侧边菜单的about us

第一次按下返回按钮,它会回到product1,但它应该回到家

第二次按下返回按钮,它会回到主页,但它应该进入产品页面

在这种情况下如何处理backstack?感谢您的帮助。