【发布时间】:2017-02-14 10:50:06
【问题描述】:
我正在使用TabLayout + ViewPager 来显示一些标签。根据服务器响应,我想创建两种可能的场景:第一个有三个选项卡,第二个只有两个,“删除”位置 0 的选项卡。
由于我要“删除”第一个选项卡,所有依赖位置来执行与特定片段相关的任何操作的方法都已过时,并且可能无法通过 instanceof 检查。
例如这是FragmentStatePagerAdapter中的getItem,目前不处理第二种情况:
@Override
public Fragment getItem(int position) {
AbstractFragment fragment;
switch (position) {
case 0:
fragment = new MainFragment();
break;
case 1:
fragment = new MessagesFragment();
break;
case 2:
fragment = new SearchFragment();
break;
default:
return null;
}
return fragment;
}
MainActivity中的监听器示例(第二种情况检查会失败):
Fragment fragment = viewPagerAdapter.getRegisteredFragment(2);
if (fragment instanceof SearchFragment) {
((SearchFragment)fragment).doStuff();
}
我唯一的想法是检查MainActivity 和getItem 中每个侦听器中的服务器响应(即是否有两个或三个选项卡),我认为这是一个糟糕的解决方案。有没有更好的方法来处理这个问题?
【问题讨论】:
标签: java android android-viewpager android-tablayout fragmentstatepageradapter