问题标签 [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 投票
0 回答
1550 浏览

android - FragmentStatePagerAdapter - 重置数据集

这是场景:

  • 适配器已经包含数据
  • 我需要清除旧数据集并添加从服务器获取的新数据集

'clear()' 可以删除所有项目,但随后适配器会重新填充旧片段而不是新片段。

提前感谢您的帮助。


0 投票
1 回答
1336 浏览

android - 回到主 Fragment 实例后,FragmentStatePagerAdapter 没有重新创建 Fragment

范围

我正在为我的大学庆典申请,其中显示了 4 个特定固定日期的活动。我有一个 main_activity,它有一个线性布局,每个片段都显示在上面。现在我有一个片段“ ScheduleFragment ”。

ScheduleFragment 由 ViewPager 和 FragmentStatePagerAdapter 组成,可以在 4 个日期之间切换。

ViewPager 有 4 个页面代表 4 个日期,这 4 个页面来自同一片段的 4 个引用,即“ ScheduleListSubFragment

从这里用户选择一个事件并可以查看包含在“ EventDescriptionFragment ”中的事件描述

问题

流程很顺利。用户遇到 ScheduleFragment,然后切换到适当的日期并选择一个事件。

现在,当他从EventDescriptionFragment返回到ScheduleFragment(我稍后会告诉我如何执行此操作)时,ViewPager 显示空白视图。当我们滑动到下一个日期时,下一个日期的事件就会出现,我们滑动回上一个日期,上一个日期的事件就会回来。

我调试了我的应用程序并知道当我们回到ScheduleFragment时,除非我滚动 viewpager ,否则 viewpager 不会为ScheduleListSubFragment创建新的片段实例。

所以,我猜 ViewPager 能够带来用户正在查看的特定引用( ScheduleListSubFragment )。

我如何回到 ScheduleFragment?我在 main_activity 中创建了一个堆栈。当用户选择一个事件时,我将ScheduleFragment的当前引用推入堆栈。当按下返回时,我弹出该引用并将其放在屏幕上。

代码 * ScheduleFragment * import com.Nit_kkr.updates.app.adapters.ScheduleFragmentAdapter;导入 com.viewpagerindicator.PageIndicator;导入 com.viewpagerindicator.TitlePageIndicator;导入 com.viewpagerindicator.TitlePageIndicator.IndicatorStyle;

ScheduleListSubFragment:

调度片段适配器:

研究 我在stackOverFlow上做了一些挖掘,发现了一些相关的查询,这些查询并不完全相同,但无法得出解决方案

任何形式的帮助,都非常感谢。

0 投票
4 回答
16518 浏览

android - ViewPager 中 Fragment 之间的通信

我正在尝试这样做:http ://android-er.blogspot.com/2012/06/communication-between-fragments-in.html 除了我使用的是 FragmentStatePagerAdapter

我有一个包含两个片段的活动FragmentAFragmentB

FragmentA 有一个edittext 和一个按钮,FragmentB 有一个textview

现在我想要的是,每当我在编辑文本中输入内容并单击按钮时,我的文本视图上就会出现一些内容。

主要活动:

片段A:

片段B:

日志猫:

每当我单击第一个片段上的按钮时,我的应用程序就会崩溃。到底是什么问题?

0 投票
1 回答
1376 浏览

android - Android - FragmentStatePagerAdapter:手动触发滑动/禁用滑动

好的,这基本上是我想要完成的事情:我有一个 FragmentStatePagerAdapter 并且希望偶尔禁用滑动功能并使用按钮前进/后退。

从我在 MyFragmentStatePagerAdapter 中的代码中截取的 A 扩展了 FragmentStatePagerAdapter :(适用于滑动,仅用于您的定位)

有什么建议么?我只需要停用滑动并使用 2 个按钮...

谢谢

0 投票
2 回答
705 浏览

android - 当我回到父片段的旧实例时,FragmentStatePagerAdapter 无法再次加载片段

设想:

我有一个片段,它有一个 ViewPager,其中包含具有不同值的单个片段的 5 个实例(不同),每个片段都有一个包含某种项目的列表。

问题:

当我单击 listView 的一个项目(例如在 page1 上)时,流程变得顺利,但是当我从那里返回按回时(在 main_activity 中覆盖 OnBackPressed(稍后将讨论)),viewPager 无法加载 subFragments。

但是当我切换到第 2 或第 3 页时,它会显示出来,而在返回到第 1 页时,它现在会显示出来。

OnBackPressed():

我在这里维护一个手动堆栈。当我单击 ListView 的一项时,当前的 Fragment 实例(当然是父 Fragment 的)进入堆栈。当用户回来时,该实例从堆栈中弹出,我在活动 FrameLayout 容器上替换它。

参考:

回到主 Fragment 实例后,FragmentStatePagerAdapter 没有重新创建 Fragment

伙计们,我真的很生气,请帮帮我。

0 投票
3 回答
234 浏览

android - 片段从 FragmentStatePagerAdapter 中消失

在我的应用程序中,我使用FragmentStatePagerAdapter的是ViewPager.

除了当我来自后台并且清理内存时,一切都运行良好。

在这种情况下,一些the fragments have disappeared. 消失的碎片不可见,但确实采取了孔筛。我什么都看不见。

什么可能导致这种情况?

谢谢!

0 投票
4 回答
10526 浏览

android - IllegalStateException:已添加片段 - 在 Android OS 4.3 上的应用程序启动期间

我的 Android 应用程序有一个单独的活动,其中一个选项卡控制器托管 4 个选项卡——每个选项卡都由一个片段表示。当我在运行 OS 4.03 的测试设备上运行该应用程序时,该应用程序可以运行,并且我可以导航到不同的选项卡等。当该应用程序在具有 OS 4.3 的设备上运行时,该应用程序在启动期间崩溃并出现 IllegalStateException: Fragment already added :MyFirstTabFragment。

这是堆栈跟踪:

java.lang.IllegalStateException:片段已添加:MyFirstTabFragment{41866dc0 #0 id=0x7f080000 MyFirstTabFragment} at android.app.FragmentManagerImpl.addFragment(FragmentManager.java:1128) at android.app.BackStackRecord.run(BackStackRecord.java:616)在 android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1435) 在 android.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:474) 在 android.support.v13.app.FragmentStatePagerAdapter.finishUpdate(FragmentStatePagerAdapter.java:167) 在android.support.v4.view.ViewPager.populate(ViewPager.java:1068) 在 android.support.v4.view.ViewPager.populate(ViewPager.java:914) 在 android.support.v4.view.ViewPager.onMeasure( ViewPager.java:1436) 在 android.view.view.measure(View.java:15848) 在 android.view。ViewGroup.measureChildWithMargins(ViewGroup.java:5012) at android.widget.FrameLayout.onMeasure(FrameLayout.java:310) at android.view.View.measure(View.java:15848) at android.view.ViewGroup.measureChildWithMargins(ViewGroup .java:5012) 在 com.android.internal.widget.ActionBarOverlayLayout.onMeasure(ActionBarOverlayLayout.java:302) 在 android.view.View.measure(View.java:15848) 在 android.view.ViewGroup.measureChildWithMargins(ViewGroup. java:5012) 在 android.widget.FrameLayout.onMeasure(FrameLayout.java:310) 在 com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2189) 在 android.view.View.measure (View.java:15848) 在 android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:1905) 在 android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1104) 在 android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1284) 在 android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1004) 在 android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5481) 在android.view.Choreographer$CallbackRecord.run(Choreographer.java:749) at android.view.Choreographer.doCallbacks(Choreographer.java:562) at android.view.Choreographer.doFrame(Choreographer.java:532) at android.view .Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:735) 在 android.os.Handler.handleCallback(Handler.java:730) 在 android.os.Handler.dispatchMessage(Handler.java:92) 在 android.os.Looper。在 java.lang.reflect.Method.invokeNative(Native Method) 在 java.lang.reflect.Method.invokeNative(Native Method) 在 android.app.ActivityThread.main(ActivityThread.java:5103) 的 loop(Looper.java:137)。lang.reflect.Method.invoke(Method.java:525) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit. java:553) 在 dalvik.system.NativeStart.main(Native Method)

该问题似乎是由于尝试在我的 FragmentStatePagerAdapter 扩展类的 getItem() 方法中的 FragmentTransaction 中添加片段引起的,如下所示:

我调用 add() 的原因是我可以将标签与我的片段相关联,以便稍后访问这些片段,以便在选择/取消选择选项卡时调用这些片段实例上的方法。

我搜索了有关 IllegalStateException 的各种帖子,并尝试了各种建议,包括调用 replace() 而不是 add()、调用 remove() 然后调用 add()、调用 MyFirstTabFragment.instantiate() 而不是 new MyFirstTabFragment(),这些都没有更改已纠正了问题。

我怀疑我可能在此过程中过早地执行此 FragmentTransaction,因为当我尝试使用我的标签添加或替换片段时,ViewPager 当前正在添加片段。有没有人对此过程有更好的见解?有没有更好的地方可以让这些单独的 add() 调用来标记我的片段?

在此先感谢您的任何建议!

0 投票
1 回答
558 浏览

android - onswipe 恢复 Fragment 默认值

有很多线程在谈论这个,但我尝试了一切,但似乎没有用。我的问题有点简单,我有一个带有 5 个片段页面的 viewpager。

这个片段中的每一个都具有相同的布局,只有 1 个编辑文本,问题是如果我在 editext onswipe 上写一些内容到下一页或上一页,我想重置该 edittext。

例如:PAGE1:editext=2929 ---(swipe)--- PAGE2:edittext = 0 ----(swipe)--- PAGE1:edittext = 0

但它总是显示 2929。

我为我的应用程序执行此操作,我正在尝试在 teste 程序上执行此操作。

这是我的适配器

这是我的片段

我喜欢对按钮监听器做同样的事情,重置编辑文本,但不是点击它,而是滑动手势。

谢谢你,贡萨洛·莫拉

编辑:来自 fragment_one1 的 xml

查看寻呼机:

我尝试从 FragmentManger 中删除片段,

另外,tv.setOffscreenPageLimit(limit);,尝试了 FragmentStatePagerAdapter 和 FragmentPagerAdapter,我有状态,因为它破坏了片段,使用事件 onDetach()、onDestroy() 等,如果你看到片段的代码,你可以看到我的方法 onDetach (), notifydatasetchanged, 设置新的适配器。

0 投票
1 回答
712 浏览

android - PagerAdapter getCount() is called many times

I am using FragmentStatePagerAdapter. for some reason the getCount() method is beeing called a lot of times before any fragment is even visible... Is it a normal behavior?

0 投票
1 回答
1253 浏览

android - 未调用 FragmentStatePagerAdapter getCount()

我在我的应用程序中使用 FragmentStatePagerAdapter。我的问题是,当我执行 notifyDataSetChanged() 时,它只调用 getCount() 而不是 getItem()。getCount 不返回 0。这是我的 FragmentStatePagerAdapter:

怎么可能pagerAdapter.notifyDataSetChanged();只调用了 getCount() 而getItem(int position)没有调用它?谢谢!