【问题标题】:Refresh fragment from ViewPager when specifc tab is selected选择特定选项卡时从 ViewPager 刷新片段
【发布时间】:2021-09-04 14:17:37
【问题描述】:

我想从 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) {

        }
    })

【问题讨论】:

    标签: kotlin android-viewpager android-tablayout


    【解决方案1】:

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

    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) {
    
        }
    })
    

    【讨论】:

    • 感谢您的回复。什么是 R.id.pager?
    • 在你的 xml 中标识 viewpager
    【解决方案2】:

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

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

    由于刷新代码在 Fragment 内部,因此您无法确定要刷新哪个 Fragment。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-01
      相关资源
      最近更新 更多