问题标签 [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.
android - FragmentTransaction 替换整个屏幕
我正在使用带有 FragmentStatePagedAdapter 的选项卡。下面的代码来自onOptionsItemSelected(MenuItem item)
方法:
android.R.id.content
但是,只会替换操作栏下方的视图(并将其覆盖在选项卡片段上)。有没有一种简单的方法可以用一个片段替换整个屏幕(不应该有一些其他的系统资源吗?)而不必为此创建一个新的活动?或者一项新活动实际上会更好吗?
在此先感谢您的帮助
容器布局(从 MainActivity 启动时开始):
我猜这是HelpFragment的类:
和片段 XML:
android - 在 Activity 重新创建时如何确定 Fragment 恢复?
对于View
有ID的s,调用时会自动保存super.onSaveInstanceState(outState);
。
对于Fragment
s 添加到 an Activity
,在什么情况下会在重新创建时Activity
重新创建(例如屏幕旋转),在哪些情况下不会?要确定什么?规则是什么?
到目前为止,我已经尝试了以下案例。但是反复试验并不意味着任何规则或解决方案。
Fragment
重新存储s的情况:
- 正常情况:
FragmentTransaction.add()
带有 ID 的布局。 - 没有 UI 的片段:
FragmentTransaction.add()
仅到标签
不重新存储Fragment
s 的情况:
- 何时
super.onSaveInstanceState(outState);
跳过。 - 在没有匹配 ID 的 UI 中恢复
Fragment
s。
一般规则是什么?我在文档中遗漏了什么?
提前致谢。
编辑:
根据我的理解和实验,所有动态(以编程方式)添加Fragment
的 s 都在Activity
调用时保存super.onSaveInstanceState(outState)
。
- 所有动态(以编程方式)添加
Fragment
的 s包括,Fragment
s 只有一个标签(没有 UI),Fragment
s 附加到一个View
(带有 UI),- 和
Fragment
s同时带有 UI 和标签。 - (还有其他类型吗?)
关于将Fragment
带有 UI 的 a 恢复到没有匹配 ID 的布局中,Fragment
确实是重新创建的。它只是无法在布局中直观地显示,并带有以下警告消息:
一旦我们返回到具有匹配 ID 的 UI,它将正确恢复。
我仍然期待一些可靠的参考资料和您的意见!
android - 由片段事务竞争条件导致的容器中的Android重复视图?
我在这里有一个简单的程序。当您点击“+”时,它会在列表中添加一个新数字。该列表在屏幕上表示为LinearLayout
包含每个数字标记的按钮。每次按“+”时,我都会清除LinearLayout
,然后将每个按钮添加到片段事务并提交。
所以如果你在程序启动后按“+”3次,它通常看起来像这样:
问题是有时似乎下一个片段事务与前一个事务同时运行。如果你按“+”太快,你会得到一个数字的多个按钮。这是它的样子:
这是我的代码的主要部分:
我把这个 sleep 每隔一秒init
调用一次,它让它更容易重现。
Field
只是一个带有按钮的片段。主要活动只是启动CodeEditor
片段。
我刚开始编写android。也许有一些我不明白的基础知识。也许事务意味着某种并发,尽管据我所知,任何地方都不应该有并发。这种类似比赛条件的行为怎么会发生?我究竟做错了什么?我将按钮包裹在片段中,这些片段被添加到CodeEditor
片段中,因为我的真实程序更复杂(这是一个精简的示例),所以嵌套片段有点意义。
完整的代码在这里。
android - 这可以在 api 11 级别以下使用 ListFragment 和 FragmentTransaction 吗?
任何机构都可以帮助我在低于 api 级别 11 中使用 Fragment。
developer.android 提供 List Fragment 和 Transaction Fragment 但它添加在 api 级别 11 中。
如何在 Froyo(2.2) 中使用 Fragment。(我想实现 ListView Fragment)。
android - Android片段替换不做任何事情
我希望有人能澄清我在这里做错了什么。我在横向模式范例的平板电脑上有一个共同的主细节。唯一需要注意的是,master 中的一些元素在 Detail 部分打开 FragA,而其他元素在 detail 部分打开 FragB。一切似乎都很好,除了切换片段的实际过程。首先显示的片段是唯一显示的片段。我一直在使用 replace 方法将它们换掉,我能找到的关于该主题的所有 SO 评论都指出,如果我在 XML 中添加了详细信息片段,这将不起作用。不幸的是,这不适用于我,因为我动态添加了所有片段。我的代码如下所示:
这是在任何地方添加这些片段的唯一代码,似乎发生的情况是首先添加的片段都可以正常工作,但替换方法根本不起作用。无论是哪个片段都只是……仍然存在。
有谁知道我做错了什么?
编辑
布局文件的相关部分如下所示:
两个 FragmentInfo 对象都正确地具有带有 id/details_fragment 的 FrameLayout 目标,这可以通过以下事实证明:如果它是添加的第一个,则任何一个都可以正常工作。
编辑 2 注意:使用这个代码块也有完全相同的结果:
android - Android Fragment - 从一个视图移动到另一个视图?
我可以先将片段添加到视图,然后将其“分离”,然后将其“重新附加”到另一个视图吗?
在代码中,我想:
但它会引发错误:
感谢帮助!
android - FragmentTransaction.Replace 时,Fragment 在哪里保存其状态?
背景:左侧有一个菜单,右侧有不同的可滚动内容。我想保存滚动位置。但我失败了。然后 ...
我已经建立了一个非常简单的项目来测试它。
换句话说,我在左边有一个菜单,不同的内容都<EditText>
在右边。(虽然属于同一类,但它们属于不同的实例)
在代码中,(非常简单)
内容.xml
内容片段.java
和程序生成的MenuFragment.java
最后,我们的MainActivity.java
要对其进行测试,请不要旋转您的设备。
首先,从菜单中选择一个项目,然后在文本框中输入一些内容。然后选择另一个项目并再次键入内容。重复几次。然后返回并...
您会发现您之前输入的文本已保存!
文本被保存并不奇怪......
但令人惊讶的是,这些文本与所有未调用的函数一起保存。onSaveInstanceState()
Android 何时保存replaced
它们FragmentTransaction
?
如果我想在每个Fragment
实例中额外保存一些数据(比如滚动位置),我应该把我的代码放在哪里?
android - 使用片段布局
我的 Android 应用程序要求某个流程有 7 个不同的屏幕。现在每个屏幕都有一个共同的顶部和底部。所以我选择创建一个FragmentActivity
和 7 个不同的Fragments
. 如何FragmentActivity
在运行时将片段插入?我在这里阅读了本教程,根据本教程,我的 mainFragmentActivity
应该具有以下布局:
它应该使用以下代码来替换片段:
我不明白的是以下行:
R.id.fragment_content
是 a FrameLayout
,这会将片段插入FrameLayout
还是什么?
android - Android - 在同一个 XML 文件上制作翻译和 objectAnimator
我一直在尝试在从一个片段滑动到另一个片段时制作 3D 立方体旋转效果。首先,我使用翻译效果(在 XML 上)调用,FragmentTransaction.setCustomAnimations(...)
然后,在打开/关闭片段时,我正在使用 Camera 类进行旋转。
这工作得很好,但似乎我也有(不要问我为什么)只使用 XML 文件来使用所有这些动画。经过长时间的搜索,我发现我应该使用 objectAnimator 进行旋转。
按照谷歌示例,我设法制作了翻转动画。现在我需要翻译片段,使它们滑入和滑出。似乎我不能在同一个 XML 文件上使用 objectAnimator 和翻译效果。由于出现此错误:
关于如何制作滑动效果并同时使用 objectAnimator 的任何想法?
感谢您的时间!
我一直在使用的代码:
card_flip_right_in.xml
片段调用另一个片段:(立方体旋转应该在这 2 之间可见)
更新:
我已经设法使用一个扩展我正在使用的片段的框架布局的类来解决前面的问题
SlidingFrameLayout.java
并将其添加到 objectAnimator:
这样效果更好,但是旋转轴位于 FrameLayout 的中间,并且不会产生立方体的错觉……是否可以将旋转轴设置在某个点上?
android - SherlockFragment 中的 WebView - FragmentTransaction.Detach() 不会删除 webview
我在我的应用程序中使用 ActionBarSherlock 的操作栏选项卡,每个选项卡由 SherlockActivity 内的单个片段填充Tabs
。
我的一个选项卡包含一个片段,FragmentHome
带有一个新闻文章列表。当一篇文章被选中时,FragmentHome
被另一个片段替换,FragmentNews
。
FragmentNews 仅包含一个用于加载所选文章的 web 视图。文章加载良好。我覆盖了onBackPressed
我的活动,以便FragmentHome
重新附加并被FragmentNews
删除。
虽然没有错误,但内部的 webviewFragmentHome
永远不会从视图中删除并与其他片段重叠。(见截图)
这很奇怪,因为相同的代码适用于其中的另一个SherlockFragment
,ListView
但在使用WebView
. 这是最初要替换的代码FragmentHome
:FragmentNews
在选项卡中重写 onBackPressed:
FragmentNews 的片段
我已经看到有关 FlashPlayer 的帖子由于 SurfaceView 切割而导致问题,但我只是显示没有任何视频的简单网页。帮助高度赞赏。