gpt4 book ai didi

java - 处理 TabLayout 的多种场景

转载 作者:行者123 更新时间:2023-12-01 08:53:21 25 4
gpt4 key购买 nike

我正在使用 TabLayout + ViewPager显示几个选项卡。根据服务器响应,我想创建两种可能的场景:第一个有三个选项卡,第二个只有两个,“删除”位置 0 的选项卡。

由于我要“删除”第一个选项卡,所有依赖位置来执行与特定 fragment 相关的任何操作的方法都会过时,并且可能会失败 instanceof检查。

例如,这是 getItemFragmentStatePagerAdapter ,目前不处理第二种情况:

@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 ,在我看来这是一个糟糕的解决方案。有没有更好的方法来处理这个问题?

最佳答案

由于只有几个选项卡,一个好的方法是制作要显示的 fragment 列表:

List<AbstractFragment> fragments = new ArrayList<>();
if (showFirstTab) {
fragments.add(new MainFragment());
}
fragments.add(new MessagesFragment());
fragments.add(new SearchFragment());

然后在 getItem 方法中,这样做:

@Override
public Fragment getItem(int position) {
if (fragments.size() > position) {
return fragments.get(position);
}
return null;
}

当您需要获取特定 fragment 时,您可以获取fragments列表并迭代它来测试instanceof

如果对您有帮助,请告诉我。

关于java - 处理 TabLayout 的多种场景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42224196/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com