我用数组列表中的数据创建初始内容(我从firebase中获得),数据每15分钟更改一次,我如何调用重新创建,或者我如何将主活动中的文本设置到片段中/我如何更新片段中的文本视图(请选择任何一种方法)
我读过很多人用getItem解决这个问题,但是请记住,我有FragmentStateAdapter,我没有这些方法viewPager2.getAdapter().notifyDataSetChanged()什么也不做
Overridable Methods in FragmentStateAdapter
然后我想到了一个接口如何改变我的文本视图中的文本,但它总是调用一个关于空指针的错误,因为我知道片段被“暂停”,而我没有看到它,因为循环等等
调用viewPager2.setAdapter(new PagerAdapter())的重新创建可以工作,但只有在神想要的时候,我才需要强制执行它或使它可靠
(我真的不知道为什么我要像谷歌建议的那样使用最新的viewpager 2和PagerAdapter FragmentStateAdapter)我应该尝试一下viewpager和所有那些旧工具吗?
2条答案
按热度按时间pes8fvy91#
根据文档,我们可以通过调用notifyDatasetChanged()来更新片段,因此可以在适配器中创建一个函数(setData),在该函数中调用notifyDatasetChanged()可能会起作用..如下所示
11dmarpk2#
我遇到了这个问题,我的解决办法是:使用适配器中的WeakReference保存片段示例,当需要更新片段中的数据时,调用片段中的方法,代码如下:
现在您可以在适配器上调用updateData(List dataList)来更新数据,并且它使用WeakReference来避免代码中的内存泄漏。