我在片段中使用ViewPager。它有3个标签
这是我的fragmentOagerAdapter的代码:
@Override
public Fragment getItem(final int position) {
Fragment fragment = null;
switch (position) {
case 0:
fragment = Fragment.instantiate(this.context, ClassA.class.getName());
break;
case 1:
fragment = Fragment.instantiate(this.context, ClassB.class.getName());
break;
case 2:
fragment = Fragment.instantiate(this.context, ClassC.class.getName());
break;
}
return fragment;
}
@Override
public CharSequence getPageTitle(final int position) {
String res = "";
switch (position) {
case 0:
res = "nameA";
break;
case 1:
res = "nameB";
break;
case 2:
res = "nameC";
break;
}
return res;
}
@Override
public int getCount() {
return 3;
}
我在主片段中添加了一个按钮,允许我在列表显示和网格显示之间切换。 所以我想要的是根据存储在Preferences中的一些枚举来获得一个动态片段 我想为第一个标签(位置0)
执行此操作所以我做了以下事情:
@Override
public Fragment getItem(final int position) {
Fragment fragment = null;
switch (position) {
case 0:
switch (Settings.getInstance().getProductDisplayMode()) {
case LARGE_GRID:
fragment = Fragment.instantiate(this.context, ClassALargeGrid.class.getName());
break;
case SMALL_GRID:
fragment = Fragment.instantiate(this.context, ClassASmallGrid.class.getName());
break;
case LIST:
default:
fragment = Fragment.instantiate(this.context, ClassA.class.getName());
break;
}
break;
case 1:
fragment = Fragment.instantiate(this.context, ClassB.class.getName());
break;
case 2:
fragment = Fragment.instantiate(this.context, ClassC.class.getName());
break;
}
return fragment;
}
...
首次打开活动时它可以正常工作,但我不知道如何动态切换第一个标签中显示的片段。
我尝试在FragmentPagerAdapter上调用destroyItem()但它没有帮助......
有什么想法吗?
答案 0 :(得分:0)
我实际上曾经有过这个问题了。我不得不将片段从viewpager中取出,然后使用FragmentManager
动态交换片段。
然后,当我想切换到另一个“页面”时,我写了一些自定义动画来“滑入”托管ViewPager
的片段
不是一个漂亮的解决方案,但它确实有效。