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

android - FragmentTransaction 替换整个屏幕

我正在使用带有 FragmentStatePagedAdapter 的选项卡。下面的代码来自onOptionsItemSelected(MenuItem item)方法:

android.R.id.content但是,只会替换操作栏下方的视图(并将其覆盖在选项卡片段上)。有没有一种简单的方法可以用一个片段替换整个屏幕(不应该有一些其他的系统资源吗?)而不必为此创建一个新的活动?或者一项新活动实际上会更好吗?

在此先感谢您的帮助

容器布局(从 MainActivity 启动时开始):

我猜这是HelpFragment的类:

和片段 XML:

0 投票
1 回答
2800 浏览

android - 在 Activity 重新创建时如何确定 Fragment 恢复?

对于View有ID的s,调用时会自动保存super.onSaveInstanceState(outState);

对于Fragments 添加到 an Activity,在什么情况下会在重新创建时Activity重新创建(例如屏幕旋转),在哪些情况下不会?要确定什么?规则是什么?

到目前为止,我已经尝试了以下案例。但是反复试验并不意味着任何规则或解决方案。

Fragment重新存储s的情况:

  1. 正常情况:FragmentTransaction.add()带有 ID 的布局。
  2. 没有 UI 的片段:FragmentTransaction.add()仅到标签

重新存储Fragments 的情况:

  1. 何时super.onSaveInstanceState(outState);跳过。
  2. 在没有匹配 ID 的 UI 中恢复Fragments。

一般规则是什么?我在文档中遗漏了什么?

提前致谢。


编辑:

根据我的理解和实验,所有动态(以编程方式)添加Fragment的 s 都在Activity调用时保存super.onSaveInstanceState(outState)

  • 所有动态(以编程方式)添加Fragment的 s包括,
    • Fragments 只有一个标签(没有 UI),
    • Fragments 附加到一个View(带有 UI),
    • Fragments同时带有 UI 和标签。
    • (还有其他类型吗?)

关于将Fragment带有 UI 的 a 恢复到没有匹配 ID 的布局中,Fragment确实是重新创建的。它只是无法在布局中直观地显示,并带有以下警告消息:

一旦我们返回到具有匹配 ID 的 UI,它将正确恢复。


仍然期待一些可靠的参考资料和您的意见!

0 投票
0 回答
637 浏览

android - 由片段事务竞争条件导致的容器中的Android重复视图?

我在这里有一个简单的程序。当您点击“+”时,它会在列表中添加一个新数字。该列表在屏幕上表示为LinearLayout包含每个数字标记的按钮。每次按“+”时,我都会清除LinearLayout,然后将每个按钮添加到片段事务并提交。

所以如果你在程序启动后按“+”3次,它通常看起来像这样:

没有损坏

问题是有时似乎下一个片段事务与前一个事务同时运行。如果你按“+”太快,你会得到一个数字的多个按钮。这是它的样子:

破碎的

这是我的代码的主要部分:

我把这个 sleep 每隔一秒init调用一次,它让它更容易重现。

Field只是一个带有按钮的片段。主要活动只是启动CodeEditor片段。

我刚开始编写android。也许有一些我不明白的基础知识。也许事务意味着某种并发,尽管据我所知,任何地方都不应该有并发。这种类似比赛条件的行为怎么会发生?我究竟做错了什么?我将按钮包裹在片段中,这些片段被添加到CodeEditor片段中,因为我的真实程序更复杂(这是一个精简的示例),所以嵌套片段有点意义。

完整的代码在这里

0 投票
1 回答
213 浏览

android - 这可以在 api 11 级别以下使用 ListFragment 和 FragmentTransaction 吗?

任何机构都可以帮助我在低于 api 级别 11 中使用 Fragment。

developer.android 提供 List Fragment 和 Transaction Fragment 但它添加在 api 级别 11 中。

如何在 Froyo(2.2) 中使用 Fragment。(我想实现 ListView Fragment)。

0 投票
1 回答
1286 浏览

android - Android片段替换不做任何事情

我希望有人能澄清我在这里做错了什么。我在横向模式范例的平板电脑上有一个共同的主细节。唯一需要注意的是,master 中的一些元素在 Detail 部分打开 FragA,而其他元素在 detail 部分打开 FragB。一切似乎都很好,除了切换片段的实际过程。首先显示的片段是唯一显示的片段。我一直在使用 replace 方法将它们换掉,我能找到的关于该主题的所有 SO 评论都指出,如果我在 XML 中添加了详细信息片段,这将不起作用。不幸的是,这不适用于我,因为我动态添加了所有片段。我的代码如下所示:

这是在任何地方添加这些片段的唯一代码,似乎发生的情况是首先添加的片段都可以正常工作,但替换方法根本不起作用。无论是哪个片段都只是……仍然存在。

有谁知道我做错了什么?

编辑

布局文件的相关部分如下所示:

两个 FragmentInfo 对象都正确地具有带有 id/details_fragment 的 FrameLayout 目标,这可以通过以下事实证明:如果它是添加的第一个,则任何一个都可以正常工作。

编辑 2 注意:使用这个代码块也有完全相同的结果:

0 投票
6 回答
15737 浏览

android - Android Fragment - 从一个视图移动到另一个视图?

我可以先将片段添加到视图,然后将其“分离”,然后将其“重新附加”到另一个视图吗?

在代码中,我想:

但它会引发错误:

感谢帮助!

0 投票
1 回答
1292 浏览

android - FragmentTransaction.Replace 时,Fragment 在哪里保存其状态?

背景:左侧有一个菜单,右侧有不同的可滚动内容。我想保存滚动位置。但我失败了。然后 ...

我已经建立了一个非常简单的项目来测试它。

换句话说,我在左边有一个菜单,不同的内容都<EditText>在右边。(虽然属于同一类,但它们属于不同的实例)

在代码中,(非常简单)

内容.xml

内容片段.java

和程序生成的MenuFragment.java

最后,我们的MainActivity.java

要对其进行测试,请不要旋转您的设备。

首先,从菜单中选择一个项目,然后在文本框中输入一些内容。然后选择另一个项目并再次键入内容。重复几次。然后返回并...

您会发现您之前输入的文本已保存!

文本被保存并不奇怪......

但令人惊讶的是,这些文本与所有未调用的函数一起保存。onSaveInstanceState()

Android 何时保存replaced它们FragmentTransaction

如果我想在每个Fragment实例中额外保存一些数据(比如滚动位置),我应该把我的代码放在哪里?

0 投票
2 回答
254 浏览

android - 使用片段布局

我的 Android 应用程序要求某个流程有 7 个不同的屏幕。现在每个屏幕都有一个共同的顶部和底部。所以我选择创建一个FragmentActivity和 7 个不同的Fragments. 如何FragmentActivity在运行时将片段插入?我在这里阅读了本教程,根据本教程,我的 mainFragmentActivity应该具有以下布局:

它应该使用以下代码来替换片段:

我不明白的是以下行:

R.id.fragment_content是 a FrameLayout,这会将片段插入FrameLayout还是什么?

0 投票
2 回答
13782 浏览

android - Android - 在同一个 XML 文件上制作翻译和 objectAnimator

我一直在尝试在从一个片段滑动到另一个片段时制作 3D 立方体旋转效果。首先,我使用翻译效果(在 XML 上)调用,FragmentTransaction.setCustomAnimations(...)然后,在打开/关闭片段时,我正在使用 Camera 类进行旋转。

这工作得很好,但似乎我也有(不要问我为什么)只使用 XML 文件来使用所有这些动画。经过长时间的搜索,我发现我应该使用 objectAnimator 进行旋转。

按照谷歌示例,我设法制作了翻转动画。现在我需要翻译片段,使它们滑入和滑出。似乎我不能在同一个 XML 文件上使用 objectAnimator 和翻译效果。由于出现此错误:

关于如何制作滑动效果并同时使用 objectAnimator 的任何想法?

感谢您的时间!

我一直在使用的代码:

card_flip_right_in.xml

片段调用另一个片段:(立方体旋转应该在这 2 之间可见)

更新:

我已经设法使用一个扩展我正在使用的片段的框架布局的类来解决前面的问题

SlidingFrameLayout.java

并将其添加到 objectAnimator:

这样效果更好,但是旋转轴位于 ​​FrameLayout 的中间,并且不会产生立方体的错觉……是否可以将旋转轴设置在某个点上?

0 投票
1 回答
1663 浏览

android - SherlockFragment 中的 WebView - FragmentTransaction.Detach() 不会删除 webview

我在我的应用程序中使用 ActionBarSherlock 的操作栏选项卡,每个选项卡由 SherlockActivity 内的单个片段填充Tabs

我的一个选项卡包含一个片段,FragmentHome带有一个新闻文章列表。当一篇文章被选中时,FragmentHome被另一个片段替换,FragmentNews

FragmentNews 仅包含一个用于加载所选文章的 web 视图。文章加载良好。我覆盖了onBackPressed我的活动,以便FragmentHome重新附加并被FragmentNews删除。

虽然没有错误,但内部的 webviewFragmentHome永远不会从视图中删除并与其他片段重叠。(见截图)

FragmentHome - 好的 片段新闻-好的 FragmentHome w/webview 干扰

这很奇怪,因为相同的代码适用于其中的另一个SherlockFragmentListView但在使用WebView. 这是最初要替换的代码FragmentHomeFragmentNews

在选项卡中重写 onBackPressed:

FragmentNews 的片段

我已经看到有关 FlashPlayer 的帖子由于 SurfaceView 切割而导致问题,但我只是显示没有任何视频的简单网页。帮助高度赞赏。