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

Posted

技术标签:

【中文标题】在未选择的选项卡中从片段调用方法【英文标题】:Call method from Fragment in unselected tab 【发布时间】:2020-12-19 13:47:36 【问题描述】:

我有一个带有标签的应用程序。我使用ViewPagerTabLayout。在每个选项卡中我都有一个Fragment。 When the tab is unselected I want to call a method from the fragment in that tab.

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

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

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

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

【问题讨论】:

【参考方案1】:

您可以尝试在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 在当前的左侧,一个在右侧。所以如果你从例如搬家5 位置到 4 然后位置 3 及以下不存在

波兹罗维尼亚

【讨论】:

Dziękuje bardzo :)

以上是关于在未选择的选项卡中从片段调用方法的主要内容,如果未能解决你的问题,请参考以下文章

Android:如何在选项卡内从一个片段导航到另一个片段? [关闭]

如何在邮递员中从环境变量设置基本授权?

在 viewpager 中获取当前 Fragment 实例

调用onclick时Android从Fragment更改Tab

使用选项卡选择调用未显示片段内容

带有片段的 ActionBar 选项卡旋转