【问题标题】: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

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

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

【问题讨论】:

    标签: java android android-studio android-fragments android-tabs


    【解决方案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 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-13
    • 2023-04-02
    相关资源
    最近更新 更多