Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Viewpager如何动态删除片段?_Android_Android Fragments_Android Viewpager_Fragmentpageradapter_Notifydatasetchanged - Fatal编程技术网

Android Viewpager如何动态删除片段?

Android Viewpager如何动态删除片段?,android,android-fragments,android-viewpager,fragmentpageradapter,notifydatasetchanged,Android,Android Fragments,Android Viewpager,Fragmentpageradapter,Notifydatasetchanged,几天来,我一直在努力在我的应用程序中构建允许用户从Viewpager中删除页面/片段的功能,我尝试将FragmentPageAdapter更改为FragmentStatePageAdapter,并将我的getItemPosition()改写为return POSITION\u NONE但是这仍然不允许我在调用fragments.remove(第页)时动态删除片段 以前有人成功地做到过吗?看起来它应该是非常简单,但它没有,下面是我的片段适配器,任何帮助都会有很大帮助,谢谢 class MyPage

几天来,我一直在努力在我的应用程序中构建允许用户从Viewpager中删除页面/片段的功能,我尝试将FragmentPageAdapter更改为FragmentStatePageAdapter,并将我的
getItemPosition()
改写为
return POSITION\u NONE但是这仍然不允许我在调用
fragments.remove(第页)时动态删除片段

以前有人成功地做到过吗?看起来它应该是非常简单,但它没有,下面是我的片段适配器,任何帮助都会有很大帮助,谢谢

class MyPageAdapter extends FragmentStatePagerAdapter {

    private List<Fragment> fragments;

    public MyPageAdapter(FragmentManager fm, List<Fragment> fragments) {

        super(fm);

        this.fragments = fragments;

    }

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

    @Override
    public Fragment getItem(int position) {

        return this.fragments.get(position);

    }

    @Override
    public float getPageWidth(int position) {

        if (position == 0) {
            return (0.75f);
        } else {
            return (1f);
        }
    }

    @Override
    public CharSequence getPageTitle(int position) {

        MyFragment theFragment = (MyFragment) this.fragments.get(position);

        return theFragment.returnTitle();

    }

    @Override
    public int getCount() {

        return this.fragments.size();

    }

}
类MyPageAdapter扩展了FragmentStatePagerAdapter{
私有列表片段;
公共MyPageAdapter(FragmentManager fm,列出片段){
超级(fm);
this.fragments=片段;
}
@凌驾
public int getItemPosition(对象){
返回位置\无;
}
@凌驾
公共片段getItem(int位置){
返回此.fragments.get(位置);
}
@凌驾
公共浮点getPageWidth(整型位置){
如果(位置==0){
返回(0.75华氏度);
}否则{
返回(1f);
}
}
@凌驾
公共字符序列getPageTitle(int位置){
MyFragment theFragment=(MyFragment)this.fragments.get(position);
返回片段。returnTitle();
}
@凌驾
public int getCount(){
返回此.fragments.size();
}
}
用杰克·沃顿的。它还有一个具有此功能的开源示例应用程序(从选项菜单中添加和删除片段)

把这个放到你的适配器中:

public void setCount(int count) {
    if (count > 0 && count <= 10) {
        mCount = count;
        notifyDataSetChanged();
    }
}

我已经决定破坏活动并重新启动它,这可能是实现我所追求的目标的最肮脏的方法,但它起作用了,我在这一点上浪费了足够多的生命,哈哈
public void setCount(int count) {
    if (count > 0 && count <= 10) {
        mCount = count;
        notifyDataSetChanged();
    }
}
    if (mAdapter.getCount() < 10) {
        mAdapter.setCount(mAdapter.getCount() + 1);
        mIndicator.notifyDataSetChanged();
    }
if (mAdapter.getCount() > 1) {
                mAdapter.setCount(mAdapter.getCount() - 1);
                mIndicator.notifyDataSetChanged();
            }