问题标签 [android-fragments]

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 投票
3 回答
13367 浏览

android - FragmentActivity 无法通过 ActivityInstrumentationTestCase2 进行测试

我在针对使用最近发布的 Fragment 支持 API 的 android 应用程序执行 android 单元测试时遇到问题。当针对 FragmentActivity 运行测试时,日志中会显示以下错误,并且类无法加载。当针对相同的类运行但从 Activity 派生的类时,测试工作正常。这两个类都可以作为应用程序正常工作!这意味着当简单地调用它们时,它们都会正确显示它们的布局和功能。支持 jar 是构建路径的一部分并包含在项目中。

我遇到的问题是,使用 Fragment(并支持 pre3.0 android)的唯一方法是使用 FragmentActivity,但如果不包括自动化测试,那么这个库有什么用处。

这是我为演示该问题而构建的代码。测试用例只是尝试实例化被测类:

我创建的两个类如下,fragment_layout 是一个空的LinearLayout:

0 投票
2 回答
37511 浏览

android - Android:从后台堆栈中删除所有 FragmentTransactions

我在一个选项卡中将一堆 FragmentTransactions 添加到后堆栈中,并且当用户选择不同的选项卡时,我想将它们全部从后堆栈中清除。我找不到从后台堆栈中清除东西的方法,只有将它们弹出的方法,而且这些方法甚至不会将 Fragment 返回给您,因此您可以关闭它们。有任何想法吗?

0 投票
4 回答
10888 浏览

android - 将 FragmentTransaction 与 DialogFragment 一起使用

所以我创建了一个DialogFragment,通过这种技术显示为对话框

现在它已经启动并且在此弹出窗口中进行用户交互后,我想将另一个片段滑入此对话框。我正在尝试通过 FragmentTransaction.add() 执行此操作,在其中我给它这个布局中一个容器的 id。此时我得到:

作为一个快速测试,我尝试将它推送到一个容器 id 上,而不是在对话框中,而是在主要的支持活动中,并且效果很好。

DialogFragments 及其容器 id 是否存在不允许 FragmentTransactions 的内容?

作为权宜之计,我告诉我的事务隐藏当前的 DialogFragment 并显示这个新片段,但是动画/显示有点不和谐,所以我真的很想解决这个问题。

谢谢

0 投票
2 回答
2912 浏览

android - 将多个活动转换为单个片段

我最近决定更新我的应用程序以支持蜂窝 3.0 中的新片段功能。我的应用程序当前在列表视图上工作,该列表视图根据单击的列表项打开不同的活动。使用本教程中的代码改编,我创建了一个仅包含两个活动的应用程序,但根据单击哪个列表项,第二个“查看器”活动使用不同的布局 xml 启动。

不幸的是,我无法弄清楚如何调用具有所有功能的旧方法。我应该导入所有旧活动,然后将方法调用到查看器活动中(我可能需要一些关于如何执行此操作的建议)还是应该将所有方法直接放入同一个查看器活动中(请考虑这些方法(顺便说一句非常大))。

一旦一切都与两个活动一起工作,那么这将是一个非常简单的任务,即“碎片化”应用程序,如此处所示虽然 我没有考虑过可能有一种方法可以允许多个片段在一个活动中占据相同的空间(如果是这种情况,请告诉我它是如何完成的)

谢谢

0 投票
5 回答
8215 浏览

android - 设备 api 级别 < 11 的 DialogFragments

我正在制作一个与 1.6+ 向后兼容的蜂窝项目/叉子。

根据 Google/Android 提供的文档,我决定构建我所有的片段,这些片段DialogFragment对蜂窝非常有用……它让我可以灵活地将任何内容作为对话框或“全屏”元素。

我现在已经合并了兼容性工具包,并将我的导入和方法调用移到了那里。现在我在 2.3 上,我正在尝试启动相同的意图,但我收到了这个问题:

的文档DialogFragment建议它可以Fragment在您不需要对话框/弹出功能时执行。

0 投票
14 回答
320119 浏览

java - 用活动组内的另一个片段替换片段

我在组活动中有一个片段,我想用另一个片段替换它:

当它作为一个单独的项目完成而不使用活动组时,它工作正常,日志cat中的每件事都工作正常,因为控制进入getview(),但没有视图可见,甚至没有出现任何异常,我希望书籍详细信息片段被部分细节片段替换。

书籍详细信息片段的 XML 具有 id book_description_fragment 和章节描述片段的 xml 具有 id section_description_fragment。

上面的代码在一个项目的 onClick 方法中,我希望当用户在水平滚动视图中点击一个项目时,片段会发生变化。

0 投票
1 回答
2939 浏览

android - 使用片段的自定义标题

我有一个应用程序,它使用自定义标题功能。我正在尝试将其迁移到 Fragments api。我得到的结果代码是这样的:

在哪里CategoriesListActivity延伸ListFragmentmain_title.xml这是:

HeaderFragment是:

并且main_title_fragment.xml是:

当我运行它时,它在Activity膨胀后崩溃:

我在这里看不到任何演员阵容问题。有人试图将片段设置为自定义标题吗?

0 投票
1 回答
4650 浏览

android - 那么 Android 3.0 中 Fragments 的确切优势是什么?

有人可以解释使用片段的确切优势吗?在什么情况下我们应该使用 Fragments?

据我了解,这个框架:

  • 有助于重用现有代码 - 如果我在片段中实现功能,那么当需要该功能时,在我的应用程序的多个部分中显示此片段相对容易。

  • 有助于处理多种屏幕尺寸 - 具有大屏幕的设备可能能够同时显示多个片段,对于较小的设备,我可以在单独的活动中显示片段。

这个框架还有更多内容吗?

编辑:

我一直在一个用于 3.0 平板电脑的大型项目中广泛使用 Fragments。对我来说,最大的优势是使用片段我可以将单个整体 Activity 中的逻辑分解为多个更小的片段。大屏幕意味着巨大的活动,难以阅读、理解(尤其是对于新团队成员)、开发和维护。片段在这件事上当然有帮助。

0 投票
1 回答
3219 浏览

android - 由于 Fragment 和 Activity 层次结构导致的菜单排序差异。(onCreateOptionsMenu)

背景

为 Android 3.0 开发,我有一个HostActivity是 and 的超NotebooksActivityNoteActivityNotebooksActivity包括一个片段,NotebooksFragment.

HostActivity中,我包含了一个菜单,我希望它出现在 ActionBar 中选项菜单的最右端,即子类中的所有菜单项都HostActivity应该出现在 中添加的菜单项的左侧HostActivity

菜单膨胀HostActivity

问题

当我在 中添加菜单项时NoteActivity,我按预期实现了所需的顺序:

但是,当我在 中添加菜单项时NotebooksFragment,由于 Fragments 的工作方式,onCreateOptionsMenu在 中的相同方法之后调用HostActivity导致HostActivity' 的菜单项出现在NotebooksFragment' 之前。

我怎样才能实现我想要的菜单订购?

0 投票
7 回答
23320 浏览

android - 在 ListFragment 中添加HeaderView 的最佳位置

我在列表中设置自定义标题时遇到了一些问题。

我正在使用自定义适配器创建 ListFragment。我的列表工作正常,但我试图找出在片段的生命周期中附加标题的位置。

我知道必须在设置适配器之前添加标题。

我尝试在 onActivityCreated 中添加我的标头,但是每次我的 Fragment 从后台堆栈返回时都会调用它,并且由于我还在 onActivityCreated 中设置了我的适配器,所以它失败了。

我尝试在 onCreate 中添加它,但视图层次结构在生命周期的那个阶段不可用。

我尝试将它添加到 onCreateView 中,但我无法将从 inflate 返回的视图转换为 ListView。所以我无法将我的标题添加到香草视图中。

有什么想法吗?