如何更新 Tablayout 中的片段? (Viewpager2, FragmentStateAdapter)
Posted
技术标签:
【中文标题】如何更新 Tablayout 中的片段? (Viewpager2, FragmentStateAdapter)【英文标题】:How to update Fragments in Tablayout? (Viewpager2, FragmentStateAdapter) 【发布时间】:2021-01-12 05:23:32 【问题描述】:我使用来自 arraylist 的数据创建初始内容(我从 firebase 获取) 数据每 15 分钟更改一次,我如何调用娱乐或如何将文本从 mainactivity 设置到片段/如何更新片段中的文本视图(其中任何一个都可以)
我读过很多人用 getItem 解决这个问题,但请记住我有 FragmentStateAdapter 我没有这些方法 viewPager2.getAdapter().notifyDataSetChanged() 什么都不做
Overridable Methods in FragmentStateAdapter
然后我想一个界面如何只是为了更改我的文本视图中的文本,但它总是调用关于空指针的错误,因为我知道片段正在“暂停”,而我没有看到它,因为循环等等
调用 viewPager2.setAdapter(new PagerAdapter() 的重新创建,但只有在上帝想要的时候才有效?我想要一些东西来强制它或可靠
(我真的不知道为什么要按照 Google 的建议使用最新的 viewpager2 和 PagerAdapter FragmentStateAdapter)我应该尝试使用 viewpager 和所有那些旧工具吗?
【问题讨论】:
如果一个 Fragment 应该更新,不应该 它 是监听变化的那个吗? 您找到解决方案了吗? 我遇到了同样的问题,我发现的所有解决方案都不起作用。你解决了这个问题吗? 我感到很惭愧,几个月后我也没有回复其他人。简短的回答,我将过程移至片段。想象一下应用程序以蓝色打开,我将更改过程放在 Fragment.java 而不是主类中 【参考方案1】:根据Doc,我们可以通过调用 notifyDatasetChanged() 来更新片段,因此通过在 Adapter 中创建一个函数(setData) 并在其中调用 notifyDatasetChanged() 可以工作..如下所示
fun addData(data: ArrayList<>)
mData = data
notifyDataSetChanged()
【讨论】:
以上是关于如何更新 Tablayout 中的片段? (Viewpager2, FragmentStateAdapter)的主要内容,如果未能解决你的问题,请参考以下文章