选择特定选项卡时从 ViewPager 刷新片段

Refresh fragment from ViewPager when specifc tab is selected

我想从 ViewPager 刷新片段(SentAtt)。我使用 TabLayout 来检测选定的片段,但我不知道如何在选择选项卡时刷新特定片段。

 tabLayout!!.addOnTabSelectedListener(object : TabLayout.OnTabSelectedListener {

        override fun onTabSelected(tab: TabLayout.Tab) {
            viewPager.currentItem = tab.position
            if(tab.position==1){

                val sentAtt:SentAtt
                
            }

        }
        override fun onTabUnselected(tab: TabLayout.Tab) {

        }
        override fun onTabReselected(tab: TabLayout.Tab) {

        }
    })

您可以使用此代码通过标签获取片段

tabLayout!!.addOnTabSelectedListener(object : TabLayout.OnTabSelectedListener {

    override fun onTabSelected(tab: TabLayout.Tab) {
        viewPager.currentItem = tab.position
        if(tab.position==1){

             val fragment =supportFragmentManager.findFragmentByTag("android:switcher:" + R.id.pager + 
    ":" 
   +
 viewPager.currentItem ) as? SentAtt
            
        }

    }
    override fun onTabUnselected(tab: TabLayout.Tab) {

    }
    override fun onTabReselected(tab: TabLayout.Tab) {

    }
})

要正确封装您的 Fragment,您不应尝试从 Fragment 外部刷新它。

Viewpager2 和 Viewpager 设置了 BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT 标志,然后 Fragment 只会在被选中时移动到 RESUMED 状态,因此您应该将刷新代码放在 Fragments onResume 方法中。

由于刷新代码在 Fragment 内部,因此您不知道要刷新哪个 Fragment。