问题标签 [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.
android - 如何避免使用片段回栈创建循环
我正在尝试在如下片段之间导航:
并且用户可以再次从Fragment D --> Fragment A
以下导航:
在这种情况下,在后按键上会创建一个循环。如何管理这种情况以避免在后按时出现片段循环。
view - 非法参数异常,找不到类片段的视图
嗨,我的主活动中有 Menu Drawer 并有 2 个 Fragment ,第一个 Fragment 包含标签栏,第二个 Fragment 很简单。第二个片段简单片段。
当我在第二个片段和返回堆栈返回按钮时,我会弹出最后一个片段,它会给我错误非法参数异常。
这是主类(菜单抽屉):
这是我的片段类 1。
}
这是第二个片段类:
这是我的日志猫,当我从第二个片段返回到第一个片段时,标签栏显示空白页或列表视图,当我尝试移动第二个标签时,它会给我非法参数异常问题
这是我的日志:
这个链接展示了我的后台堆栈是如何工作的
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 调用的结果。当返回结果并且用户从列表中选择一个项目时,它们会被发送到PlayerDetailsActivity
which extends FragmentActivity
。
使用PlayerDetailsActivity
一个FragmentTabHost
视图,其中包含可以查看的有关播放器的不同类型的信息。这是这条路径的“终点”——用户无法访问其他片段或活动。这就是问题所在。当我在此活动中点击“后退”按钮时,我的意图是让用户返回PlayerSearchFragment
片段(搜索结果),在这种情况下,如果我在 Nexus 6模拟器中,他们会这样做,但他们会全部NavigationMenuActivity
如果我在我的实际 Nexus 6设备上,可以回到活动。
我在PlayerDetailsActivity
按下后退按钮时调用了以下方法,但它始终显示零条目:
我希望所有设备的体验都一样,无论是硬件还是模拟器。
android - 如何从android中的后台堆栈中删除特定片段
我在从后台堆栈中删除特定片段时遇到问题。我的场景是这样的。Fragment-1 被 Fragment-2 替换,然后 Fragment-2 被 Fragment-3 替换。
调用顺序;片段 1--> 片段 2--> 片段 3。
当 Fragment-3 在屏幕上然后单击后退按钮时,我想去
Fragment-1。这意味着我想从后堆栈中删除 Fragment-2。
这个怎么做 ?
android - Android BackStack 问题
我在解决 BackStack 遇到的问题时遇到了麻烦。我有 3 个由 Activity 管理的片段:
我使用此代码的片段之间的导航:
我希望用户能够使用其他 2 个片段的后退按钮返回 FinalizeFrag。这适用于当前代码,但在 1 个流程中我确实遇到了问题:
- 用户将新的“孩子”保存在 ChildSpecificationFrag 中(工具栏中的保存图标)
- 用户被重定向到 ChildrenOverviewFrag
- 用户按下返回按钮
- 停留在 ChildrenOverviewFrag 上(应该重定向到 FinalizeFrag)
注意:当我再次按下按钮时,它会重定向到 FinalizeFrag
单击关闭按钮时的代码(ChildSpecificationFragment):
单击保存按钮时的代码(ChildSpecificationFragment):
如您所见,我正在从 BackStack 中删除 Fragment。我究竟做错了什么?提前致谢!
android - 奇怪的片段回栈行为
我遇到了一个activity
基于Fragment
s 导航的应用程序。我有一个地方包含后续步骤:
fragment1 在容器 id1 中替换;我add
用于将 fragment2 添加到同一个 id1 容器中;在我replace
用于将 fragment3 添加到同一个 id1 容器之后;
这是三个不设防的交易。所有都添加到后堆栈。但是当我按下后退时,最后没有出现fragment2,我在容器id1上只看到fragmtent1,但fragment2在后退堆栈中,因为下一次按下后退按钮没有效果fragment1仍然可见,下一次按下后退按钮后fragment1将被删除从容器。
看起来在第一次按下后退按钮 fragment2 后没有创建它的视图,所以他正在容器上消失。
我用于替换的部分代码:
添加:
有任何想法吗?谢谢。
android - 如何仅用另一个片段替换片段返回堆栈顶部的项目?
当我执行getSupportFragmentManager().popBackStack();
它时,它会弹出返回堆栈并执行与弹出的返回堆栈条目相关的片段事务。
我有 3 个片段:
- FragmentA
- FragmentB
- FragmentC
我的活动在用户推广时执行 3 次交易:
- 片段 A 首先添加到我的容器中。
- 然后分离 FragmentA 并添加 FragmentB。并且交易被添加到后台堆栈。
- 然后我想要的是 FragmentC 只替换 fragmentB 并更改后退堆栈条目,这样当用户按下后退按钮时,应该显示 FragmentA。
这是我执行事务 3 的代码:
事务 1 和 2 似乎工作正常。但是,当我尝试执行事务 3 时,发生的情况是 FragmentB 被 FragmentC 替换,但 Fragment A 也出现在 FragmentC 被绘制之前,并且 FragmentA 继续出现在 FragmentC 后面。
我究竟做错了什么?如何在后台不显示 FragmentA 的情况下将 FragmentB 替换为 FragmentC。
android - 模拟 backstack savedInstanceState 行为
我想在我的应用程序留在后台太久时测试它的状态。
当我一个接一个地打开 20 个应用程序时,我最后使用的应用程序(这是我正在测试的应用程序)最终终止并发生了 savedInstanceState。有没有办法为我正在测试的应用程序模拟这种行为,而无需打开另外 20 个应用程序来将我的应用程序埋入后台?
android - 如何清除支持FragmentManager的backStack?
有什么办法,如何在存储片段中不调用 onCreateView() 的情况下清除支持 FragmentManager 的 backStack?
我了解片段生命周期并在弹出时调用 onDestroyView() 和 onCreateView()。 http://developer.android.com/guide/components/fragments.html#Creating
我也知道如何从后台弹出所有片段
或者
但两种方法都调用 onCreateView() 和其他生命周期方法,直到 onDestroyView() 和 onDestroy()。
但是有什么办法,如何通过仅从 onDestroyView() 而不是从 onCreateView() (片段内部)调用来清除这个后台堆栈?
或者有什么办法可以用清除以前的片段来替换事务?
例如,我想在进行交易之前明确回溯:
android - 如何处理 backstack 以用不同的数据替换相同的片段
为了在 1 个活动中的片段之间导航,我实现了一个名为 的方法fragmentSwicher
,该方法获取一个片段并将其替换为容器中的已激活片段。
到目前为止一切顺利,但现在的问题是我想重新使用具有不同数据的片段,但我的fragmentSwitcher
方法拒绝更改片段,因为backstack
.
这是backstack
在 MainActivity 中处理的方法:
我试图以这种方式部分解决这个问题:我把
在外面
并fragmentSwitcher()
用不同的数据替换相同的片段,但是当用户按下后退按钮时,她/他将面对这个片段:
那不在backstack
。
backstack
也就是说,替换相同的片段时我应该怎么处理?