java - 替换 ViewPager fragment

标签 java android replace android-viewpager fragment

我正在尝试替换 ViewPager 适配器中的 fragment ,但它似乎不起作用。也没有显示任何错误。当我调用 Replace(int, Fragment) 方法时,它什么也不做。你知道为什么它不起作用吗?

public class PagerAdapter extends FragmentPagerAdapter {
    private Vector<Fragment> mFragments;
    private Stack<Fragment> mHiddenFragments;
    public PagerAdapter(FragmentManager fm) {
        super(fm);
        mFragments = new Vector<Fragment>();
        mHiddenFragments = new Stack<Fragment>();
    }
// here is the replacement method I'm using
    public void replace(int index, Fragment fragment) { 
        mHiddenFragments.push(mFragments.get(index));
        mFragments.set(index, fragment);
        notifyDataSetChanged();
    }
    public void replace(int index) {
        mFragments.set(index, mHiddenFragments.pop());
        notifyDataSetChanged();
    }
    public void add(Fragment fragment) {
        mFragments.add(fragment);
        notifyDataSetChanged();
    public void remove(int index) {
        mFragments.remove(index);
        notifyDataSetChanged();
    }
}

编辑: 我无法开始工作的部分是删除 fragment 。看来我只能删除 ViewPager 中当前查看的 fragment 之后的 fragment 。

示例:假设我有 fragment 0 和 1 => mFragments.size() == 2

mPagerAdapter.add(new GenreListFragment());
mPagerAdapter.remove(1);

最佳答案

我最喜欢的解决方案是使用嵌套 fragment ,因为这让我可以完全控制它们。

您还可以查看此 Replace Fragment inside a ViewPager

编辑。 当您收到notifyDataSetChanged() 调用时,您还可以实现PagerAdapter 的抽象方法。

@Override
public int getItemPosition(Object object) {
return POSITION_NONE;
}

问候。

关于java - 替换 ViewPager fragment ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20530786/

相关文章:

java - Ant 覆盖自定义 list 文件

java - 通过 BusinessObjects Java SDK 访问简单的报告过滤器和输入控件

php - 如何将字符串中的每个 URL 替换为另一个唯一的 URL?

javascript - 检索字符串 Javascript 的子集

java - 从 Java 中的字符串中修剪空格

java - Spring Boot 1.4.1 和 WAS 9 冲突

java - 如何使用 Java 分隔符模式?

安卓错误 :Execution failed for task ':app:packageDebug'

android - 在 Android 中将 SmbFile(Samba) 转换为位图

Android:以编程方式在 FrameLayout 中设置边距 - 不起作用