如何更新 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)的主要内容,如果未能解决你的问题,请参考以下文章

在 TabLayout 和 ViewPager2 中执行异步任务后更新具有相同布局的多个片段

由于 ViewPager2 导致 TabLayout 损坏

如何从片段更改 Tablayout 的背景颜色?

在tablayout片段之间进行通信[重复]

在 TabLayout 中的片段之间滑动变慢

如何使 tablayout 片段适合 INSIDE viewpager