gpt4 book ai didi

android - 如何在 ViewPager2 中获取当前 fragment

转载 作者:行者123 更新时间:2023-12-02 12:51:25 28 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Get current fragment with ViewPager2

(16 个答案)


8 个月前关闭。




我使用了这个 ViewPager2 依赖项:

实现 'androidx.viewpager2:viewpager2:1.0.0'

然后我编写代码并为 FragmentStateAdapter 制作适配器,如下所示:

private inner class ViewPagerAdapter(fragmentManager: FragmentManager,
lifecycle: Lifecycle, config: TribunConfig?)
: FragmentStateAdapter(fragmentManager, lifecycle) {
private val config: TribunConfig?
override fun createFragment(position: Int): Fragment {
return TribunNewsFragment.newInstance(if (menuTribun!!.get(position) == "News") "home"
else menuTribun!!.get(position)!!.replace(" ", "").toLowerCase(), config)!!
}

override fun getItemCount(): Int {
return menuTribun!!.size
}

init {
this.config = config
}
}

一个方法 onCreate我实现了一些与代码相关的 viewpager2 及其适配器,如下所示:
        viewPager2!!.offscreenPageLimit = 1
viewPager2!!.adapter = ViewPagerAdapter(supportFragmentManager, lifecycle, config)
TabLayoutMediator(tabLayout!!, viewPager2!!, TabLayoutMediator.TabConfigurationStrategy { tab: TabLayout.Tab?, position: Int -> tab!!.text = menuTribun!!.get(position) }).attach()

但是当我想进行 swipeRefresh 时我遇到了问题。我的 swipeRefresh 需要当前 fragment 才能访问 fragment 内的方法。但是有 没有方法 getItem在 fragment 状态适配器中。任何人都可以帮助我吗?

最佳答案

  • 在适配器中创建属性以保存所有 fragment
  • 保存当前位置
  • 需要时按位置从 fragment 列表(属性)中获取 fragment

  • 像这样的东西:
        val fragments: MutableList<Fragment> = mutableListOf()

    private val config: TribunConfig?
    override fun createFragment(position: Int): Fragment {
    val fragment = TribunNewsFragment.newInstance(if (menuTribun!!.get(position) == "News") "home"
    else menuTribun!!.get(position)!!.replace(" ", "").toLowerCase(), config)!!

    fragments.add(fragment)
    return fragment
    }

    家长:
     yourTabLayout.addOnTabSelectedListener(object : TabLayout.OnTabSelectedListener {
    override fun onTabSelected(tab: TabLayout.Tab?) {
    val fragment = adapter.fragments[tab!!.position]
    // cast fragment to your fragment class and do what you want
    }

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

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

    您也可以使用 whenif-else为您的 fragment 位置或使用您需要的方法创建基类并将获取 fragment 转换为它。

    关于android - 如何在 ViewPager2 中获取当前 fragment ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61096385/

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