问题标签 [fragmentpageradapter]

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

android - 使用 FragmentPagerAdapter 在左侧添加选项卡

这将是我关于标签的最后一个问题,我保证 :) (也许)所以从以前的问题和尝试和错误中,我有 FragmentPagerAdapter 称为 PagerAdapter 它创建了一些标签,也让我能够动态创建新的标签。问题是新标签总是会插入到我现有标签的右侧:

(图片:http://s7.directupload.net/file/d/3198/73dyzvzv_png.htm

我尝试了以下方法:

  1. 添加一个静态条目“null”,在创建初始选项卡集时将被跳过。然后稍后在创建“临时选项卡”时,我可以将该条目覆盖到我想要的任何片段。给了我一些奇怪的 IllegalSTateException ......

  2. 我认为效果最好的事情实际上真的很想做得不好:而不是添加片段:

    /li>

使用

但它给出了一个带有消息的 IllegalStateException:

当我尝试添加临时片段时。现在,两个问题:

  1. 有没有办法绕过那个片段选项卡,我可以暂时去掉所有片段标签并重建它们吗?或者

  2. 有没有更好更优雅的方法来做到这一点?还是我应该重新设计我的 UI 以便可以在右侧使用选项卡?:P

编辑:这里有一些代码:(我不想只是向人们发布死亡之墙,因为它可能会吓跑他们:o)

片段页面适配器:

主要活动:

堆栈跟踪:

0 投票
5 回答
19931 浏览

android - FragmentPagerAdapter getItem 没有被触发

目前,FragmentActivity我使用以下代码在两种类型的片段之间切换。

2 个片段正在切换。

  • ColorFragment - 一个简单的片段,它用纯黑色填充其背景。
  • ViewPagerFragment - 一个片段包含ViewPager. 用户可以在紫色片段和蓝色片段之间滑动。

负责刷紫色和蓝色碎片的代码如下。

但是,我在切换过程中遇到了奇怪的行为。

  1. 显示黑色片段。
  2. 切换。
  3. 查看寻呼机,它可以在显示的紫色和蓝色片段之间滑动。
  4. 切换。
  5. 显示黑色片段。
  6. 切换。
  7. 没有显示任何内容,因为未触发 MyFragmentPagerAdapter 的 getItem。

我想我的情况类似于FragmentPagerAdapter getItem is not called

但是,我不喜欢使用FragmentStatePagerAdapter,因为在页面之间切换时可能会产生更多开销。

有什么办法可以克服这个问题吗?

我包含一个完整的可行源代码来演示这个问题:https ://www.dropbox.com/s/jok9tz5ktvfcteo/viewpagerbug.zip

0 投票
1 回答
401 浏览

java - FragmentPagerAdapter 在第一页显示所有片段内容

在内存中,我有一个项目列表,每个项目都有一个标题和一个 0..N 个块的列表(存储一些信息)。我知道我在内存中正确地创建了这个列表,因为我已经将整个结构输出到了命令行。

我有一个使用 ViewPager 来显示这些数据的活动。ViewPager 的每一页都是一个 Item,它充满了 Fragment,这些 Fragments 保存了 Item 的每个 Chunk 的信息。

按照我目前的编码方式,前两个项目的块显示在第一个项目下的第一页上。当页面滚动到第二页时,它是空的。当页面滚动到第 3 页时(我现在只有 3 个项目的列表供测试)它也显示一个空白页,但是,当页面返回到第 2 页时,它显示第 1 个项目的块. 然后,每次导航到第一页然后是第二页,第三页的块被新添加到现有列表中。如果有从第 2 页到第 3 页的导航并返回,则第 1 项的块将新添加到列表中。这可以通过不断增长的列表来完成。我不知道为什么它的行为不正常。

这是我的主要活动(包括 FragmentPagerAdapter):

Controller 非常简单,并按照您的预期返回信息。Controller.setup() 只是创建项目列表。

这是我的项目片段:

最后是我的 Chunk 片段:

我知道这是很多代码,但我不知道问题出在哪里。我已将其简化到最低限度,仅包括可能成为问题根源的操作。我也没有包含我的 XML 布局文件,但它们已经过测试并且工作正常。

0 投票
1 回答
7454 浏览

android - 删除页面并将页面添加到 FragmentPagerAdapter

我正在使用一个有 5 页的片段寻呼机适配器。我将适配器设置为查看寻呼机,如下所示

在片段中,我为每个页面分别创建一个线性布局,如下所示

我将适配器设置如下

我的问题是如何动态添加和删除第 5 页...比如在某些情况下我需要第 5 页,而在某些情况下我需要删除第 5 页。

0 投票
1 回答
232 浏览

android - FragmentPageAdapter 怪癖和崩溃

我对 android 开发很陌生,我从一个简单的项目开始学习如何处理大部分基本 UI。

我使用过 ActionBarSherlock 和 ViewPageIndicator,总体而言,我创建的简单应用程序正在运行,但我仍然遇到一些奇怪的问题。让我描述一下:

  • 当我单击将带有 FragmentPageAdapter 的片段移动到其位置的按钮时,我分配给事务的过渡效果不会发生。只有当我返回(事务被添加回堆栈)并再次按下按钮时才会发生这种情况。
  • 如果我在单击按钮后返回,然后再次单击它,则会显示片段 - 但行为很奇怪并且会做各种奇怪的事情,例如,FragmentPageAdapter 认为它有 5 个页面而实际上是 3 个页面(那些额外的页面是只是空白,他们的标题也是)
  • 如果我单击按钮,然后更改设备的方向,应用程序崩溃 - 尝试调试它,但我得到了 android 框架内的一些代码。

我认为我遇到了所有这些问题,因为我在代码中的某个地方确实出错了。请帮助我理解我的问题,如果可以的话,请指出一些我无法阅读并理解我到底做错了什么的好做法或地方,以及我怎样才能以正确的方式做到这一点。

我将有问题的代码上传到这里:https ://code.google.com/p/mich-android-testapp/source/browse/trunk/TestApp/

我感谢你们的任何帮助!

0 投票
1 回答
359 浏览

fragment - Android PagerAdapter,添加手动充气片段的问题

我正在使用 FragmentPagerAdapter 来显示 MyFrag 类型的几个选项卡(与 Fragments 相关联)。在 MyFrag.onCreateView() 中,我以编程方式对几个内部 Fragment 进行膨胀:MyInternalF1 和 MyInternalF2。

我得到的是一个尴尬的显示结果。外部的 MyFrag 实例很好 - 并且与它们的选项卡相关联。但是内部 Fragment 嵌入了错误的 Fragment... 第一个 MyFrag 确实包含自己的内部 Frags,但是第二个、第三个等 MyFrags 要么没有任何内部 Frags,要么托管一些其他 Frament 的内部 Frags。(内部片段工作正常,它们只是位于随机片段上)。

我正在使用来自 v13 示例的选项卡/寻呼机示例小部件:samples/Support13Demos/src/com/example/android/supportv13/app/FragmentPagerSupport.java

伪代码:

0 投票
2 回答
2396 浏览

android - ViewPager 显示片段的问题

我正在尝试使用 ViewPager 获取带有三个选项卡的片段。最初,我曾经使用 FragmentMgr 从 Activity 实例化片段,这很好。当我使用 ViewPager 转换此导航时,不再显示此 Fragment。

MainActivity.java

当我像这样启动 Fragment 时,它会显示出来。例如:

我在上面的代码中尝试了这个更改来使用 ViewPager,如下所示:

其中 LaunchPageAdapter 调用 LaunchListFragment。

LaunchPageAdapter.java

这是 LaunchListFragment.java

这是 MainActivity 使用的 main.xml 布局

LaunchListFragment 使用的 fragment_launch_list.xml

当我调试它时,我可以看到 LaunchListFragment 正在实例化,onCreate 和 onCreate View 被调用,它只是不会被显示。:(

如果我在 ViewPager 实现中遗漏任何内容,这里有人可以告诉我吗?

更新

当我在不使用 Viewpager 的情况下调用 LaunchListFragment 时,我首先设置了内容视图并传递了 R.id.item_detail_container,这是我希望在其中显示片段的 FrameLayout 的 id。请参考前面的 main.xml

当我将其更改为使用 ViewPager 时,我不确定要在哪里显示 Fragment。在我的片段 onView 中,我正在膨胀 fragment_launch_list 并返回视图。但是视图分页器如何知道在哪里设置片段视图。它在 id 寻呼机内吗?

我是一个绝对的初学者,如果所有这些都是幼稚的问题,我深表歉意。

干杯。

0 投票
1 回答
13780 浏览

android - 更新 FragmentPagerAdapter 中的当前片段

我有一个带有标签指示器的 viewPager。ViewPager 是带有 FragmentPagerAdapter 的 setAdaper。

我对 FragmentPagerAdapter 的内部工作原理知之甚少。我注意到邻居片段被恢复(调用 OnResume ),即使邻居还不可见。

我将更新方法放在 OnResume 中,认为一旦片段是当前的,它将被更新。

广告横幅刷新
我希望页脚中设置的广告横幅在向左滑动一次或向右滑动一次时更新。不会重新创建邻居片段(好事)。但是 onResume 已经被调用以避免横幅刷新。loadBannerAd 方法在 OnResume() 方法中。



如何通过片段内的方法仅为当前片段调用方法 loadBannerAd() ?

编辑:我已经知道 mViewPager.setOnPageChangeListener() 。

但是当片段还没有被创建的时候,就有危险了。在 Activity 中管理片段是否已创建会破坏它的纯粹性。

在此处输入图像描述

0 投票
2 回答
9242 浏览

android - 在 SherlockFragmentActivity 的 FragmentPagerAdapter 中更新 Fragment View

我正在关注来自ActionBarSherlock的 Samples 下的示例FragmentTabsPager

在我的例子中,我使用 TabsPager 和 FragmentPagerAdapter 示例中的相同代码创建了一个简单的 SherlockActivity。

我创建了两个片段(不同的类)。第一个仅包含四个按钮。根据点击哪个,主Activity 会获得一个代码(例如1、2、3、4)。我正确地得到了按下按钮的代码。

现在,在第二个片段中,我想根据该代码绘制一些东西,或者相同的东西,动态更新它的视图。

我一直在寻找解决方案,但我一无所获。在这种情况下,我有这个:

[MainActivity.java]

我设法用新值更新了 Bundle info.args,但我不知道如何正确地将它传递给片段并命令它更新其动态视图。

这可能吗?

提前致谢。

更新

最后,我使用了 Sunny 好心解释的内容。我用我的 Fragments 保存了一个 SparseArray,所以我绝对可以访问它们,因为我知道它在 MainActivity 中的位置:

[MainActivity.java]

最后在 MySecondFragment.java 中,我可以访问我的 Layout 组件(例如 GridView),因为它们是在 onCreateView 期间初始化的,因此我将所需的所有代码放入我的 updateView() 方法中。

例如,我更新了 GridView 的内容:

[MySecondFragment.java]

高温高压

更新 2

为了将片段保存到主要活动的状态包中,我包含了以下代码。当应用程序从纵向更改为横向或反之(重新创建)时,不会调用函数getItem ,因此SparseArray映射不会再次使用必要的片段重新填充:

此外,在 TabsAdapter 类中:

高温高压

0 投票
0 回答
1428 浏览

android - 片段垂直滑动

有没有办法在Android中垂直滑动片段?我的意思是类似FragmentPagerAdapter但在垂直模式下。我需要这个来编写一个带有垂直滑动页面的文本查看器,比如 pdf 阅读器。