如何解决未选中选项卡中Fragment的调用方法
我有一个带有标签的应用程序。我使用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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。