选择特定选项卡时从 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。
我想从 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。