gpt4 book ai didi

android - TabLayout 不反射(reflect) ViewPager 适配器的变化

转载 作者:可可西里 更新时间:2023-11-01 11:43:05 25 4
gpt4 key购买 nike

我想要一个带标签的对话框。所以我加了一个TabLayout,在它下面加了一个ViewPager。我创建了一个 FragmentPagerAdapter,并用它调用了 ViewPager 的 setAdapter()。然后我用 ViewPager 调用了 TabLayout 的 setupWithViewPager()

现在,我增加了 FragmentPagerAdapter 的数量,并向其添加了一个新 fragment ,并调用了 notifyDataSetChanged()。问题是新标签没有出现。

在尝试了很多东西之后,我用同一个 ViewPager 再次调用了 TabLayout 的 setupWithViewPager()。它确实使新选项卡出现,但我不确定这是否是正确的方法。为什么 TabLayout 不自动反射(reflect)对 ViewPager(新 fragment )的更改?

最佳答案

您的解决方案非常简单,但还需要做一件事。如果您可以看到方法 setupWithViewPager() 做了什么,它还会添加 TabLayoutOnPageChangeListener 到 viewPager,所以无论何时调用 setupWithViewPager() 你再添加一个监听器。您应该在调用 setupWithViewPager() 之前调用 viewPager.clearOnPageChangeListeners() 来删除旧的 lisetners,这样就可以了。

在我正在进行的项目中,我们使用了一些不同的解决方案,但这是因为使用具有某些特定行为的自定义选项卡 View :您可以在您的 viewpageradapter 上注册 DataSetObserver。每当您调用 notifyDataSetChanged() 时,您的 DataSetObserver.onChanged() 也会被调用。在这种方法中,我们在 tablayout 中使用选项卡进行操作(创建新的/删除旧的)。我们还为 tabLayout 创建新的 onTabSelectedListeners。

关于android - TabLayout 不反射(reflect) ViewPager 适配器的变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35381854/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com