ViewPager2在单击选项卡上没有加载片段,而是在刷卡上。

发布于 2025-02-13 15:23:10 字数 1043 浏览 0 评论 0原文

我正在使用tablayout的ViewPager2。最初,一切都很好。即滑动和单击选项卡,加载正确的片段。说我有3个片段选项卡A,选项卡B和选项卡。我需要从选项卡B中打开其他片段,例如打开tab b1。打开tab b1,在按下返回按钮时,它将返回到选项卡。现在,当我单击选项卡时, A,它会刺激Taba,但是TabA的片段未加载。但是,如果我们滑动,它的工作正常。以下是我的ViewPager代码。

ViewPager代码

private val fragmentList = arrayListOf<BaseMvvmFragment<*, *>>(
        TabAFragment(),
        TabBFragment(),
        TabCFragment(),
        TabDFragment(),
       
    )

    private fun setupPager() {
        val adapter = ViewPagerAdapter(
            fragmentList,
            childFragmentManager,
            lifecycle
        )
        binding.mainViewPager.adapter = adapter

        TabLayoutMediator(binding.pageIndicator, binding.mainViewPager) { tab, position ->
            fragmentList[position].titleRes?.let {
                tab.text = getString(it)
            }
        }.attach()


        binding.mainViewPager.setCurrentItem(
            fragmentList.indexOfFirst { it is TabAFragment },
            false
        )

    }


无法弄清楚发生了什么。有人可以帮忙吗?

I am using ViewPager2 with Tablayout . Initially everything works fine. ie, both swipe and clicking on Tab ,loads the correct fragment. Say I have 3 fragments Tab A, Tab B and Tab C. I need to open other fragments from Tab B ,say Tab B1.Tab B1 is opened and on pressing back button it goes back to Tab B. Now when I click on Tab A, it higlights TabA, but the fragment for Tab A is not loaded. But if we swipe, its working properly . Below is my Viewpager code.

ViewPager code

private val fragmentList = arrayListOf<BaseMvvmFragment<*, *>>(
        TabAFragment(),
        TabBFragment(),
        TabCFragment(),
        TabDFragment(),
       
    )

    private fun setupPager() {
        val adapter = ViewPagerAdapter(
            fragmentList,
            childFragmentManager,
            lifecycle
        )
        binding.mainViewPager.adapter = adapter

        TabLayoutMediator(binding.pageIndicator, binding.mainViewPager) { tab, position ->
            fragmentList[position].titleRes?.let {
                tab.text = getString(it)
            }
        }.attach()


        binding.mainViewPager.setCurrentItem(
            fragmentList.indexOfFirst { it is TabAFragment },
            false
        )

    }


Not able to figure out what's happening. Could someone help ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

酒儿 2025-02-20 15:23:10

在我的情况下,通过添加viewPager2.SetOffScreenPageLimit(3);

viewpager2.setUserInputEnabled(true); // enable swipe, false to disable 
viewpager2.setOffscreenPageLimit(3);

在Kotlin:in Kotlin:

viewpager2.offscreenPageLimit = 3

In my case solved by adding viewpager2.setOffscreenPageLimit(3); :

viewpager2.setUserInputEnabled(true); // enable swipe, false to disable 
viewpager2.setOffscreenPageLimit(3);

In Kotlin:

viewpager2.offscreenPageLimit = 3
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文