问题标签 [fragmentstatepageradapter]

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

android - Android ViewPager - 当前页面内的访问视图抛出 NPE

我正在使用 android.support.v4.view.ViewPager 并注意到,在我的活动的 onStart() 方法中的 ViewPager 上设置我的 android.support.v4.app.FragmentStatePagerAdapter 后,我无法检索当前显示的 ViewPager 页面,因为它似乎还没有被初始化/附加/绘制到活动中。我总是得到一个NPE。

当我的 ViewPager 完全初始化(包括其片段页面及其视图)时,是否会触发事件?

我在主要活动的 onStart() 方法中的代码如下所示:

我的适配器看起来像这样:

谢谢你的帮助。

编辑事情是,当我在 onStart() 方法之后调用它时,所有这些都有效,例如在我的一个自定义按钮视图中。

0 投票
0 回答
541 浏览

android - 在 FragmentStatePagerAdapter 中的所有 Fragment 上调用方法

我有一个通过 ListFragments 进行分页的 ViewPager。每页是一个特定的日期,每页中的列表包含多个类别的项目。

用户可以随时通过对话框切换显示的类别。这对于在类别列表更改后实例化的页面(及其片段)来说不是问题,因为它们是使用新设置实例化的(在它们更改时传递给 FragmentStatePagerAdapter)。

但我的问题是用户更改类别列表时已经实例化的所有页面。这些页面(或者更确切地说,它们的片段)需要立即刷新。为此,我需要能够调用方法 (changeData()) 将新类别设置传递给每个 ListFragment,然后调用 notifyDataSetChanged() 以便他们刷新视图。

如何对 FragmentStatePagerAdapter 中已实例化的片段执行此调用?

这是我用于填充页面的 FragmentStatePagerAdapter 和 ListFragments 的代码:

您会注意到上面的 seListingCategories() 方法,我使用该方法在适配器上设置类别字符串,因此每个新实例化的 Fragment 都有要显示的正确类别。在相同的方法中,您会注意到在适配器上调用 notifyDataSetChanged() 的行已被注释掉。

该调用导致适配器为内存中的每个 Fragment(当前页面和所有其他尚未销毁的页面)调用 getItemPosition(),我借此机会以这种方式对它们调用 changeData()。并且视图已成功更新。

但是,似乎已经销毁的片段(具有保存状态)只是恢复到没有更新类别列表的保存状态。更不用说这似乎有点矫枉过正。当我可以更新现有对象时,为什么要销毁并重新创建每个片段?

无论如何,下面是 FragmentStatePageAdapter 中使用的 ListFragment 类:

提前感谢您的帮助!

0 投票
1 回答
1299 浏览

android - ViewPager - 适配器变空后更新视图

我正在使用 aFragmentStatePagerAdapter和 a ViewPager

一切正常。如果我使用空适配器打开我的活动,ViewPager则为空,如果我添加项目,则ViewPager更新正确。

但是,如果我打开我的活动并删除我的最后一项ViewPagerViewPager则不会正确失效并保持最后一项Fragment可见。

我怎样才能避免这种情况?

我正在使用我的库,它是 ViewPager + ViewPagerIndicator + FragmentPager(State)Adapter 的包装类:

它实现了一个简单的 FragmentStatePagerAdapter 对它的片段的弱引用......

我的代码如下所示:

我正在调用mPagerManager.notifyDataSetChanged();它直接将调用转发到 FragmentPagerStateAdapter ...

PS:我知道,如果项目数为 0,我可以让它不可见......但我想知道是否有更好的解决方案

0 投票
1 回答
4252 浏览

android - 片段上的 ViewPager 中的片段不会在方向更改时重新加载

我正在开发一个使用 ActionBarSherlock 和 ViewPagerIndicator 的 Android 应用程序。主要活动是 SherlockFragmentActivity,用户通过操作栏上的选项卡在片段之间导航。所有选项卡都是 SherlockListFragments,并且大多数只包含一个 ListView。但是,一个片段 (HeadlinesFragment) 包含一个 ViewPager、CirclePageIndicator 和一个用于平板电脑的 ListView,而在手机上只有一个 ListView。ViewPager 有一个 FragmentStatePagerAdapter,它为项目返回一个 SherlockFragment。

问题是,在方向更改(或任何配置更改)时,ViewPager 内的子片段不会重新加载,并且 CirclePagerIndicator 不会显示任何指标,就好像 ViewPager 为空一样。但是,ListView 确实会正确重新加载。在片段的初始加载时,ViewPager 可以正常工作,但在方向改变之后就不行了。

MainActivity.java

头条新闻Fragment.java

活动标题.xml

RotatorAdapter.java

RotatorFragment.java

0 投票
1 回答
3385 浏览

android - 在 ViewPager 中动态跳过页面

我有一个ViewPager持有Fragments via FragmentStatePagerAdapter。假设寻呼机最初包含以下页面(Fragments):

当用户滑动时,他可以从Ato BBtoC等移动。但是在某些情况下,当用户更改A页面上的某些选项时,他可以不移动到B,但是C

然后用户返回A,修改某些内容并重新启用B

我怎样才能实现这种非常动态的行为?Fragment当用户更改某些内容然后重新填充 s 时,我无法在任何时候添加s ViewPager,因为它很慢并且会中断流程。

0 投票
1 回答
197 浏览

android - FragmentPagerAdapter 错误地更新页面?

我在 FragmentStatePagerAdapter 中遇到奇怪的问题。当我向前滑动时,它工作正常,当我向后滑动时它会跳过 2 个片段。如何解决这个问题?有什么方法可以获取当前项目编号吗?

导航页面适配器

在片段中

0 投票
3 回答
1004 浏览

android - ListView 为空时如何显示 TextView?

我有一个返回 ListView 的 ListFragment。如果列表中没有项目,我想显示一个替代的 TextView 。假设您可以在 XML 中添加一个TextView android:id="@android:id/empty"元素。

但...

添加包含ListView和 TextView 的 FrameLayout 可以预见地给我"FrameLayout cannot be cast to ListView"

我也不能添加一个 TextView 元素。“文档中根元素之后的标记必须格式正确。”

而且我不能切换到View而不是ListView因为它不再是一个列表。

...我该怎么做?

代码:

XML:

0 投票
1 回答
644 浏览

android - 如何在android片段中保存多个膨胀的布局视图状态?

我正在开发一个旅游预订应用程序。在我的旅游预订页面中,我有两种类型的表格,一种用于主要旅行者,另一种用于其他旅行者(可能是成人或儿童)。
主要旅行者字段包括:
职务
名字
姓氏
性别
出生日期
电子邮件
联系电话
国籍

其他旅行者字段包括:
头衔
名字
姓氏
性别
出生日期

为了处理这种情况,我在主布局中创建了主要旅客表格,并将其他旅客表格放在单独的布局中,因为我必须多次显示其他旅客表格。在第一次尝试时,用户只会获得主要旅行者表格。有添加更多旅行者的按钮,当用户点击该按钮时,他将获得另一个旅行者表格。为了显示其他旅行者表格,我夸大了 otherform.xml 文件。为此,我使用的是片段而不是 Activity 。

我的问题是在提交并移至下一个预订步骤(移至下一个片段)之后。如果我回来更改一些旅行者信息。我所有膨胀的布局(其他旅行者表格)都消失了。我的最后一个其他旅行者表单字段数据传输到我的主要旅行者表单字段(只有前五个字段数据更改,其余三个字段数据与我之前填写的相同)。

有什么办法可以在卷土重来时继续保存这些膨胀的布局。

任何帮助将非常感激。提前致谢

0 投票
1 回答
1883 浏览

android - 使用 FragmentStatePagerAdapter 进行 Fragment 到 Fragment 通信

我正在尝试通过 FragmentA 中的 Button 更新 FragmentB 中 TextView 的文本。但是每当我单击按钮时,我的 TextView 中什么也没有发生。可能是什么问题呢?这是我的代码:

Communicator.java:

MainActivity.java:

片段A:

片段B:

0 投票
0 回答
165 浏览

android - 在 FragmentStatePagerAdapter 中恢复片段(即记住列表位置)

我正在使用 a FragmentStatePagerAdapter,因为使用ViewPagera FragmentPagerAdapter(有很多页)会导致内存问题。

这很好用,但是我希望能够在ListFragments重新创建片段时将页面 ( ) 恢复到其原始位置。这看起来很简单,但我没有太多运气实现它。

有没有人有任何提示?

谢谢