如何替换ListViewPagerAdapter.java中的片段

时间:2014-03-06 13:38:36

标签: android android-viewpager fragmentpageradapter

我在片段中使用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()但它没有帮助......

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我实际上曾经有过这个问题了。我不得不将片段从viewpager中取出,然后使用FragmentManager动态交换片段。

然后,当我想切换到另一个“页面”时,我写了一些自定义动画来“滑入”托管ViewPager的片段

不是一个漂亮的解决方案,但它确实有效。