在未选择的选项卡中从 Fragment 调用方法

Call method from Fragment in unselected tab

我有一个带有选项卡的应用程序。我使用 ViewPagerTabLayout。在每个选项卡中,我都有一个 Fragment。取消选择选项卡时,我想从该选项卡中的片段调用方法。

如果我想在选定的片段上调用方法,我会这样做:

tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
            @Override
            public void onTabSelected(TabLayout.Tab tab) {
                String tag = "android:switcher:" + viewPager.getId() + ":" +  viewPager.getCurrentItem();
                Fragment f = getSupportFragmentManager().findFragmentByTag(tag);
                ((MyFragment) f).someMethod();
            }

            @Override
            public void onTabUnselected(TabLayout.Tab tab) {

            }

            @Override
            public void onTabReselected(TabLayout.Tab tab) {

            }
        });

基于

但问题是,我不知道如何在未选择的选项卡上执行此操作。

你能帮我解决这个问题吗?

您可以在 onTabUnselected 方法中尝试 运行 您的代码,但请注意,此片段可能会在下一步中被破坏。

        @Override
        public void onTabUnselected(TabLayout.Tab tab) {
            // tag for tab position
            String tag = "android:switcher:" + viewPager.getId() + ":" +  tab.getPosition();
            Fragment f = getSupportFragmentManager().findFragmentByTag(tag);
            if(f instanceof MyFragment) {
                ((MyFragment) f).someMethodWhenUnselecting();
            }
        }

还要记住,ViewPager 只在内存中保留 current 和 current 左边和右边一个 Fragment。所以如果你从例如5 位到 4 然后位 3 及以下不存在

火山灰