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

android - 如何避免使用片段回栈创建循环

我正在尝试在如下片段之间导航:

并且用户可以再次从Fragment D --> Fragment A 以下导航:

在这种情况下,在后按键上会创建一个循环。如何管理这种情况以避免在后按时出现片段循环。

0 投票
1 回答
269 浏览

view - 非法参数异常,找不到类片段的视图

嗨,我的主活动中有 Menu Drawer 并有 2 个 Fragment ,第一个 Fragment 包含标签栏,第二个 Fragment 很简单。第二个片段简单片段。

当我在第二个片段和返回堆栈返回按钮时,我会弹出最后一个片段,它会给我错误非法参数异常。

这是主类(菜单抽屉):

这是我的片段类 1。

}

这是第二个片段类:

这是我的日志猫,当我从第二个片段返回到第一个片段时,标签栏显示空白页或列表视图,当我尝试移动第二个标签时,它会给我非法参数异常问题

这是我的日志:

这个链接展示了我的后台堆栈是如何工作的

http://pastebin.com/sKXRvSpT

0 投票
4 回答
347 浏览

android - Nexus 6 设备和模拟器之间的不同回栈行为

我正在开发一个支持小部件并显示搜索结果的应用程序,该Fragment搜索SearchView结果RecyclerView将用户发送到 aFragmentActivity以显示选择的详细信息。所有这一切都很好,但我看到 Nexus 6 模拟器和实际设备之间关于 backstack 的行为不一致。在模拟器中,一切正常,如果在详细信息 FragmentActivity 上按“后退”按钮,用户将返回搜索结果片段。在实际的 Nexus 6 设备上,用户会一直回到AppCompatActivity包含我的应用程序菜单的位置(此活动使用 support FragmentManager,它将其管理的片段添加到后台堆栈):

将用户从 Fragment 发送到 FragmentActivity 的代码只是一个带有附加功能的意图:

我没有对 backstack 做任何特别的事情(还)——这是默认行为。

这里可能是什么问题?我已经阅读了一些关于 backstack 的内容,当您从 FragmentActivy 返回到不使用 FragmentManager 的 Fragment 时,我还没有看到任何手动向 backstack 添加内容的内容。

frame_menu_container编辑1:这是定义的布局XML :

编辑 2:好的,这是我的高级活动和片段的文字描述:

NavigationMenuActivity, 延伸AppCompatActivity. 这是所有片段根据需要换入和换出的地方,SupportFragmentManager是使用的地方,也是我拥有replaceFragment()方法的地方。

我有以下片段,所有这些片段要么显示静态信息,要么进行 REST 调用以检索和显示数据,要么允许用户发送反馈。所有 extend android.support.v4.app.Fragment,它们都没有用户可以去的其他片段或活动。

  • 首页片段
  • 日历片段
  • 积分榜片段
  • PlayerSearchFragment(见下文)
  • 关于片段
  • 反馈片段

这些片段功能的唯一例外是PlayerSearchFragment,它也扩展了android.support.v4.app.Fragment. RecyclerView当用户想要搜索玩家时,此片段包含显示 REST 调用的结果。当返回结果并且用户从列表中选择一个项目时,它们会被发送到PlayerDetailsActivitywhich extends FragmentActivity

使用PlayerDetailsActivity一个FragmentTabHost视图,其中包含可以查看的有关播放器的不同类型的信息。这是这条路径的“终点”——用户无法访问其他片段或活动。这就是问题所在。当我在此活动中点击“后退”按钮时,我的意图是让用户返回PlayerSearchFragment片段(搜索结果),在这种情况下,如果我在 Nexus 6模拟器中,他们会这样做,但他们会全部NavigationMenuActivity如果我在我的实际 Nexus 6设备上,可以回到活动。

我在PlayerDetailsActivity按下后退按钮时调用了以下方法,但它始终显示零条目:

我希望所有设备的体验都一样,无论是硬件还是模拟器。

0 投票
6 回答
46610 浏览

android - 如何从android中的后台堆栈中删除特定片段

我在从后台堆栈中删除特定片段时遇到问题。我的场景是这样的。Fragment-1 被 Fragment-2 替换,然后 Fragment-2 被 Fragment-3 替换。

调用顺序;片段 1--> 片段 2--> 片段 3。

当 Fragment-3 在屏幕上然后单击后退按钮时,我想去

Fragment-1。这意味着我想从后堆栈中删除 Fragment-2。

这个怎么做 ?

0 投票
2 回答
226 浏览

android - Android BackStack 问题

我在解决 BackStack 遇到的问题时遇到了麻烦。我有 3 个由 Activity 管理的片段:

在此处输入图像描述

我使用此代码的片段之间的导航:

我希望用户能够使用其他 2 个片段的后退按钮返回 FinalizeFrag。这适用于当前代码,但在 1 个流程中我确实遇到了问题:

  1. 用户将新的“孩子”保存在 ChildSpecificationFrag 中(工具栏中的保存图标)
  2. 用户被重定向到 ChildrenOverviewFrag
  3. 用户按下返回按钮
  4. 停留在 ChildrenOverviewFrag 上(应该重定向到 FinalizeFrag)

注意:当我再次按下按钮时,它会重定向到 FinalizeFrag

单击关闭按钮时的代码(ChildSpecificationFragment):

单击保存按钮时的代码(ChildSpecificationFragment):

如您所见,我正在从 BackStack 中删除 Fragment。我究竟做错了什么?提前致谢!

0 投票
1 回答
61 浏览

android - 奇怪的片段回栈行为

我遇到了一个activity基于Fragments 导航的应用程序。我有一个地方包含后续步骤:

fragment1 在容器 id1 中替换;我add用于将 fragment2 添加到同一个 id1 容器中;在我replace用于将 fragment3 添加到同一个 id1 容器之后;

这是三个不设防的交易。所有都添加到后堆栈。但是当我按下后退时,最后没有出现fragment2,我在容器id1上只看到fragmtent1,但fragment2在后退堆栈中,因为下一次按下后退按钮没有效果fragment1仍然可见,下一次按下后退按钮后fragment1将被删除从容器。

看起来在第一次按下后退按钮 fragment2 后没有创建它的视图,所以他正在容器上消失。

我用于替换的部分代码:

添加:

有任何想法吗?谢谢。

0 投票
1 回答
907 浏览

android - 如何仅用另一个片段替换片段返回堆栈顶部的项目?

当我执行getSupportFragmentManager().popBackStack();它时,它会弹出返回堆栈并执行与弹出的返回堆栈条目相关的片段事务。

我有 3 个片段:
- FragmentA
- FragmentB
- FragmentC

我的活动在用户推广时执行 3 次交易:

  1. 片段 A 首先添加到我的容器中。
  2. 然后分离 FragmentA 并添加 FragmentB。并且交易被添加到后台堆栈。
  3. 然后我想要的是 FragmentC 只替换 fragmentB 并更改后退堆栈条目,这样当用户按下后退按钮时,应该显示 FragmentA。

这是我执行事务 3 的代码:

事务 1 和 2 似乎工作正常。但是,当我尝试执行事务 3 时,发生的情况是 FragmentB 被 FragmentC 替换,但 Fragment A 也出现在 FragmentC 被绘制之前,并且 FragmentA 继续出现在 FragmentC 后面。

我究竟做错了什么?如何在后台不显示 FragmentA 的情况下将 FragmentB 替换为 FragmentC。

0 投票
1 回答
55 浏览

android - 模拟 backstack savedInstanceState 行为

我想在我的应用程序留在后台太久时测试它的状态。

当我一个接一个地打开 20 个应用程序时,我最后使用的应用程序(这是我正在测试的应用程序)最终终止并发生了 savedInstanceState。有没有办法为我正在测试的应用程序模拟这种行为,而无需打开另外 20 个应用程序来将我的应用程序埋入后台?

0 投票
1 回答
1757 浏览

android - 如何清除支持FragmentManager的backStack?

有什么办法,如何在存储片段中不调用 onCreateView() 的情况下清除支持 FragmentManager 的 backStack?

我了解片段生命周期并在弹出时调用 onDestroyView() 和 onCreateView()。 http://developer.android.com/guide/components/fragments.html#Creating

我也知道如何从后台弹出所有片段

或者

但两种方法都调用 onCreateView() 和其他生命周期方法,直到 onDestroyView() 和 onDestroy()。

但是有什么办法,如何通过仅从 onDestroyView() 而不是从 onCreateView() (片段内部)调用来清除这个后台堆栈?

或者有什么办法可以用清除以前的片段来替换事务?

例如,我想在进行交易之前明确回溯:

0 投票
1 回答
576 浏览

android - 如何处理 backstack 以用不同的数据替换相同的片段

为了在 1 个活动中的片段之间导航,我实现了一个名为 的方法fragmentSwicher,该方法获取一个片段并将其替换为容器中的已激活片段。

到目前为止一切顺利,但现在的问题是我想重新使用具有不同数据的片段,但我的fragmentSwitcher方法拒绝更改片段,因为backstack.

这是backstack在 MainActivity 中处理的方法:

我试图以这种方式部分解决这个问题:我把

在外面

fragmentSwitcher()用不同的数据替换相同的片段,但是当用户按下后退按钮时,她/他将面对这个片段:

那不在backstack

backstack也就是说,替换相同的片段时我应该怎么处理?