在未选择的选项卡中从 Fragment 调用方法
Call method from Fragment in unselected tab
我有一个带有选项卡的应用程序。我使用 ViewPager
和 TabLayout
。在每个选项卡中,我都有一个 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
及以下不存在
火山灰
我有一个带有选项卡的应用程序。我使用 ViewPager
和 TabLayout
。在每个选项卡中,我都有一个 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
及以下不存在
火山灰