问题标签 [fragmenttransaction]

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

java - 在 FragmentTransaction 中使用 add().addToBackStack()、add().detach() 和 replace().addToBackStack() 有什么区别?

在 Android文档的 FragmentTransaction 项中,描述了该方法与对当前视图中添加的所有 Fragmentreplace()调用该方法remove()然后调用该方法相同add()。在这种情况下,为了恢复之前的片段,我们可以使用addBackToStack(),这意味着事务状态仍然由片段管理器管理,并且在我们弹出堆栈时将反转其操作。

另一方面,当我们使用 实现事务时add(),除了使用 之外add().addBackToStack(),我们还可以使用使用detach()方法和恢复片段attach(),它们的行为与addBackToStack().

那么这些场景在幕后有什么区别呢?

0 投票
5 回答
11883 浏览

android - 退出动画不起作用;FragmentTransaction 自定义动画不适用于隐藏

我使用 show/hide 来显示占据屏幕一部分的片段。由于某种原因,当显示片段时slide_in_left动画播放,但是当片段被隐藏时没有动画,片段就消失了。我已经尝试对和使用slide_in_left动画,但这没有帮助。当将代码跟踪到支持包中时,会创建动画并执行用于显示它的代码。(我追踪了电话)exitenter.hide

以防万一这是slide_out_left动画的xml

编辑: 问题可能与my_fragment与另一个包含 webview 的片段共享屏幕宽度的事实有关。当 .show 为 my_fragment 执行时,它变得可见并在水平线性布局中共享空间(两个片段中的每一个占用多少屏幕宽度由 weight 参数确定)。

0 投票
3 回答
41286 浏览

android - 按下后退按钮时如何用片段A替换片段C?

我的场景:活动 1 由片段 A-> B-> C 组成。所有片段都使用以下代码添加:

现在,从片段C,我想直接返回片段A。因此,我ft.addToBackStack(TAG)在添加片段C时进行了评论。所以当我从CI按下返回按钮时,直接在屏幕上获取片段A。

但是,Fragment C 并没有被 A 取代。实际上,这两个 Fragment 都是可见的。我该如何解决这个问题?

0 投票
4 回答
46129 浏览

android - Android FragmentTransaction.addToBackStack 混淆

FragmentTransaction.replace(id, fragment, tag)我正在研究 Fragments,对区分和FragmentTransaction.addToBackStack(tag)调用有点困惑。假设我当前的片段是FragmentA,然后我加载了FragmentB。我希望将来,当我需要加载FragmentA时,我不必重新加载它。只需加载旧状态的旧版本。我使用了以下代码段:

现在我很困惑,我应该在哪里添加字符串标签?在replace()addToBackStack()在两个电话中?你能解释一下这两个标签位置的区别吗?

0 投票
1 回答
1042 浏览

android - 按下后退按钮后如何重新创建前 ListFragment 的列表视图

我有一个 ListFragment,其中包含一个列表视图,其中包含一个导航结构。通过选择列表中的一项,应显示下一个导航层次结构阶段。等等。

下一个层次阶段由一个新片段创建(删除旧片段并使用 addToBackStack 通过片段事务添加新的相同片段),其中新列表视图的 arrayadapter 更新为下一个导航层次结构的项目。那工作还不错。

我希望用户能够通过后退按钮导航回来。从这里开始我的问题。我不知道如何保存列表视图,以便在使用后退按钮后重新创建它。

我认为使用 onSaveInstanceState 是个好主意。但是当事务被提交时不会调用 onSaveInstanceState 。我通过在方法中放置一个 Log.d("..","...) 来检查它。它没有被调用。(我发现,当从纵向旋转到横向时调用 onSaveInstanceState视图,反之亦然。但这对我的问题没有帮助)。

那么在使用后退按钮并创建前一个片段后,存储列表视图的元素并将其取回以重新创建列表视图的最佳想法是什么?所有项目都是存储在绑定到 ListAdapter 的 ArrayList 中的字符串。


这是我的代码。我实现了一个界面,通过单击列表视图中的项目调用父活动中的方法。在这个方法中,我首先调用一个方法来填充已经存在的 ArrayList (navigationsItems) 与作为下一个导航阶段内容的新项目:

我的 ArrayAdapter 的代码:

在这个方法中,我首先调用一个方法来用下一个导航阶段的项目填充 ArrayList (navigationsItems):

然后我调用该方法,用它加载新的 ListFragment 并将新的 ArrayAdapter 绑定到它:

如前所述,向前导航没有问题。但是当我在第二个导航阶段按下后退按钮时,前一个 ListFragment 被加载(用 ListFragment 的 onCreatView() 中的 Log.d("..."."...)-Messages 验证),但是未创建其中的前列表视图。


我目前正在研究一种新方法。当您单击列表中的某个项目时,我会将当前列表连同对当前 ListFragment 的引用一起写入基于向量的堆栈中。然后我用“onBackPressed()”方法按下后退按钮。所以现在当按下按钮时,我调用已经提到的方法(见上文),将堆栈中的项目数据写回到列表中,通过存储的引用调用表单 ListFragmt 并将更新的 ArrayAdapter 绑定到它。这实际上正在进行中。完成后我会写下这种方法的结果。

0 投票
1 回答
964 浏览

android - 来自 ApiDemos 示例的 FragmentLayout 类中的奇怪 FragmentTransaction

很抱歉,这个问题是针对那些在Eclipse上工作并可以访问ApiDemo 示例代码的人。
具体来说,我正在尝试将片段活动基于名为FragmentLayout的示例

以下代码对我来说是有问题的(您可以在 ApiDemo FragmentLayout.javaShowDetails()方法中找到完整的代码):

我有两个问题:

  1. index == 0和有什么区别index != 0

  2. 资源R.id_a_item(仅在所有ApiDemo中出现,搜索后)属于某种菜单快捷资源,完全不清楚为什么在这里使用它。

android.developers 指南没有解释这段代码。

0 投票
1 回答
416 浏览

android - 如何确保没有并发的 FragmentTransaction?

在我的应用程序中,我有一个ListFragment

当用户点击Refresh按钮时,它将刷新列表:

所以它将从堆栈中删除旧片段并将新片段添加到其中。

问题是如果用户Refresh真的快速点击按钮,可能会导致覆盖问题,旧的片段不会从片段容器中删除。

我想这是一个并发问题。

如果是这样,有没有办法“锁定”事务,以便另一个事务将等到前一个事务完成?

0 投票
0 回答
443 浏览

android - 带有片段视图的 Android 操作栏选项卡重叠

我的标签:
private void tabSherlock() { actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

选项卡监听器:

一个选项卡包含项目单击移动到详细信息片段的列表视图:尝试 {

如果我点击另一个选项卡视图会从细节片段中重叠,任何人都可以帮助我提前谢谢。

0 投票
1 回答
1342 浏览

android - check which fragment is loaded in framelayout before replacing it

Is it possible to check whether a fragment has already been loaded into a FrameLayout before adding it?

0 投票
0 回答
325 浏览

android - 片段内的 ViewPager 无法显示所有片段,拖曳片段工作且一个片段为空白

结构是 Fragment[ViewPager[3 Fragment]] 当我第一次启动 viewpager(里面有 3 个片段)时,它可以完美地工作,但是当我将另一个片段替换为它并替换它时,片段 1 和片段 3可以复习,但是片段 2 是空白的!!!我是android开发的新手,为这个问题疯狂了很长时间!!!

我是安卓开发的新手