问题描述
我有一个带有标签的应用程序。我使用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) {
}
});
基于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
保持当前状态。因此,如果您从5
到4
的位置,然后不存在3
及以下的位置
pozdrowienia