未选中选项卡中Fragment的调用方法

问题描述

我有一个带有标签的应用程序。我使用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) {

            }
        });

基于How to know Fragment id for the fragment(s) provided by the tabbed activity template

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

您能帮我吗?

解决方法

您可以尝试使用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仅在内存中保持当前状态,而在内存的左侧Fragment保持当前状态。因此,如果您从54的位置,然后不存在3及以下的位置

pozdrowienia