问题标签 [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 - popBackStack 时预加载一个片段
我对 backstack 行为有疑问。这就是我正在做的事情:
怎么了:
- Fragment 1 被添加并在 backstack 中
- 然后第二个片段替换第一个片段并将其添加到后台堆栈。
现在我想用一个新的事务来改变我的最后一个 backstacked 片段,该事务放置一个新的 backstack 片段,所以:
但是这个由 apopBackStack + replace
进行的事务是frag1
通过调用它的onCreateView
and来加载的onActivityCreated
。我知道这是预期的行为,因为这是 backstack 的工作方式,但我试图找到一种方法来避免这种预加载。
编辑
在这个问题中,我使用 backstack 片段的概念来使交易更加清晰。这里的每笔交易都是一个添加+删除(这是一个替换)。我正在使用的替换代码是:
你可以看到我正在创建基于片段 backstack 的导航历史,因为它是一种浏览器。当添加一个“页面”时,会有一个片段和一个 backstack 事务。在这种情况下,我试图:
- 删除当前片段。
- 从 backstack 中删除事务。
- 添加一个新的片段,而不弹出和加载前一个 backstack 片段。
我希望它更清楚。
编辑 2
我已经为支持此行为的标志填写了请求功能。在这里找到它。
android - 带有片段/工具栏的后退导航
我现在正在用这个挠头....我有一个ActionBarActivity
加载初始Fragment
的 - 原始菜单在活动中膨胀。Now, I have a navigation bar that, when an item is selected, loads a different fragment and adds this to the backstack.
当我这样做时,我想设置几件事:
- 将家设置为向上指示器
- 使主活动中的选项菜单无效
- Set 有片段的选项为 true
- 确保向上指示器正确导航回原始片段
发生了一些相当奇怪的事情 - 向上指示器只出现一次并且不作为后退按钮,虽然我已经使新菜单无效并膨胀,但新菜单会附加到原始活动菜单。
编辑:menu.clear()
好的,我已经解决了附加问题 - 忘记添加onCreateOptionsMenu
方法。
我的导航抽屉布局具有onClick
所有菜单项的方法,这些方法会触发另一个片段的加载:
切换首页:
一旦项目被触发,将onCreate
包含无效和 hasOptions 代码:
然后onCreateOptionsMenu
扩展另一个菜单布局(包含一个称为设置的项目)。
如前所述,这只能部分工作一次——我第一次使用该项目加载片段时,我得到了后退图标,但它也不起作用(这是onOptionsItemSelected
为了检查主页项目按下而设置的——它什么也不做)。当我按下后退按钮时,它会将我带回正确的位置。但是,如果我向后导航,即使代码运行,后退箭头现在也会显示更长的时间onCreate
!
android - 从后台堆栈重新创建片段时未调用处理 onResume()
我最近开始通过用片段替换“所有”活动来重构我的 Android 应用程序。在现在的状态下,它的表现比以前差了很多……
我的问题在于“向上导航”、回栈行为和将片段放在前面时对片段的一般“重新绘制”。
所以我在我的用户界面中创建了一个逻辑层次的片段,当用户在主菜单中时,不应该显示“向上”按钮。当用户在任何其他片段中时,向上按钮应将用户带回主菜单。
当我开始实现这个时,我只是放了一个
在我的片段的 onResume 方法中。这将按预期工作,直到主菜单从后堆栈(或主页导航)移到前面。然后不调用 onResume() 方法。
当用户在应用程序的其他地方时想要“重新绘制”片段似乎是大部分开发人员想要做的事情。我已经阅读了一些解决方案,基本上包括监听 backstack 更改,然后为即将返回的片段调用 onResume()。这个解决方案感觉就像一个丑陋的黑客,你不应该在真正的应用程序中拥有。那么大型应用程序的开发人员如何处理这个问题呢?最佳做法是什么?还是我错过了一些原则,说明如何根本不将自己编码到这个角落?
我必须说,我认为 Fragment 的 Android 开发页面几乎是在说生命周期:
“管理片段的生命周期很像管理活动的生命周期”
“已恢复:片段在正在运行的活动中可见。”
此信息意味着当片段从不可见变为可见时应调用 onResume()。
另外,我提供导航的解决方案显然不正确,关于如何获得正确行为的任何提示?
谢谢你的帮助!
android - 使用 ActionBarActivity 和 getSupportFragmentManager 时 BackStack 损坏
我的应用程序中有以下工作流程:
Activity 1(一个 ListView)-> Activity 2(一个加载 Fragment 的 ListView)-> Fragment 1 -> Fragment 2。
一切都很顺利,我可以前进到片段 2,然后按“后退”按钮向后遍历每一步。
在某些时候,我需要添加一个 ActionBar。由于代表谷歌进行了一些奇怪的编程,我必须扩展导入 android.support.v7.app.ActionBarActivity 的 ActionBarActivity,这需要我将所有片段管理器更改为“支持”导入 android.support.v4.app。片段管理器。
结果,我在整个工作流程中都有一个 ActionBar,但我只能前进到 Fragment 2。任何按 Back 按钮,都会导致 Activity 1 出现,没有 BackStack。
那么,是否不可能使用带有 ActionBar 和 BackStack 的动作/片段,或者我的 BackStack 是否因其他原因而损坏?
任何帮助,将不胜感激。
谢谢!
android - 带有嵌套/子片段的 Android Backstack
我对嵌套片段的回栈方式有疑问,非常感谢提供的任何帮助。
我有片段 A 和片段 B。片段 A 包含另一个片段(ButtonFragment)。在 Activity 的 onCreate 中,我加载了 Fragment A,然后切换到 Fragment B。当我回到 Fragment A(退出后台堆栈)时,出现以下错误。
异常调度完成信号。
E/MessageQueue-JNI(6330):MessageQueue 回调中的异常:handleReceiveCallback
E/MessageQueue-JNI(6330): android.view.InflateException: Binary XML file line #16: Error inflating class fragment
...
原因:java.lang.IllegalArgumentException:二进制 XML 文件第 16 行:重复 id 0x7f080000、标签 null 或父 id 0x0 与 com.example.fragmentnavigation.MainActivity$ButtonFragment 的另一个片段
没有子片段,导航工作。也许我必须添加一些 ChildFragmentManager 处理,但我不知道什么和在哪里。我希望你能帮助我。
主布局
片段 A 布局
主要活动
片段 A
按钮片段
解决方案特别感谢@arun-kumar
关于片段的一个非常好的概述 https://github.com/codepath/android_guides/wiki/Creating-and-Using-Fragments
片段 A 布局
片段 A 的 onCreate
android - 后按后更新导航抽屉
我正在Android
用 a 实现一个应用程序,但Navigation Drawer
我遇到了问题。
我从 Android Studio 中的模板(带有导航抽屉的 Android 应用程序)开始,并在其中添加了一个新部分 - 设置。当点击设置按钮时,用户会被带到一个新的活动,用户可以通过按下操作栏中的“向上”按钮(效果很好)或按下物理后退按钮来返回。那部分效果不太好。
当按下“向上”按钮然后打开导航栏时,我的主页会突出显示(选中)。但是当使用返回按钮并打开导航抽屉时,设置项被选中,就好像用户正在查看该页面而不是主页一样。
所以这是因为导航抽屉片段没有更新,我还没有找到解决这个问题的任何方法。我想要的是重新创建导航抽屉(这是我认为按下“向上”按钮时会发生的情况)。你知道我怎样才能做到这一点吗?
我开始研究基于此的解决方案:
但我不知道在那里写什么会更新整个 UI。(通过调用 onCreate() 进行了实验,但它太丑了,不可能是正确的方法)。
有什么建议么?
更新:
从另一个活动按 BACK 时不会发送 onBackStackChanged 事件。仅适用于当前活动中的片段。
android - 片段回栈,android?
我的活动由导航抽屉组成,目前在左侧菜单中有 5 个选项。这一切都在片段中打开。
我正在寻找一种方法来保留所有片段的堆栈,以便当用户按下后退按钮时,他会移动到上一个片段。
Like-Activity 由抽屉菜单组成,该菜单有 5 个选项 menu1、menu2、menu3、menu4、menu5,具有相应的片段 F1、F2、F3、F4、F5。
用户按下menu1,他被转发到F1 然后按下menu2,然后按下menu4。
当用户在 F4 并且他按下后,他应该被移动到 F2 而不是退出活动或应用程序。
它如何实现以及首选示例或示例代码。
我目前使用此代码,但它并没有帮助我
android - FragmentManager 和 FragmentTransaction 到底是做什么的?
我在下面有简单的代码
这些代码行有什么作用?
android - 循环片段回栈
我的应用中有 5 个片段。我使用后台堆栈。当我打开片段时,他添加到后台堆栈。
[片段1]->[片段2]->[片段3]->[片段4]->[片段5]
当我点击后退按钮时,我需要循环打开 2 个最新的片段。
[片段4]->[片段5]->[片段4]->[片段5]->[片段4]->[片段5]
可能吗?
android - Android ViewPager Fragment - 维护状态
我有一个由 FragmentStatePagerAdapter 支持的 ViewPager。该应用程序是单个 Activity 应用程序,每个“页面”都有片段。目前我正在使用 ViewPager 显示产品类别,每个类别将包含一个列出所有产品的 ListView(或 RecyclerView)。一旦用户点击产品,viewpager 片段就会被 ProductDetailsFragment 替换。这一切都很好,但当用户按下时,它会重新加载所有类别片段。有没有办法避免这种情况?问题是,如果用户必须分页超过 3 页,他们会希望保持滚动状态。