Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/229.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.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_Android Arrayadapter - Fatal编程技术网

如何删除Android ViewPager中的页面?

如何删除Android ViewPager中的页面?,android,android-fragments,android-viewpager,android-arrayadapter,Android,Android Fragments,Android Viewpager,Android Arrayadapter,我试图在单击按钮后在查看页面中动态添加/删除片段,但是如果我通过单击“上一步”按钮删除片段(一个表单),然后再次添加片段,表单将保留其数据(EditText不为空) 这是我的适配器: package com.thomas.playlists.viewPager; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.

我试图在单击按钮后在
查看页面
中动态添加/删除
片段
,但是如果我通过单击“上一步”按钮删除片段(一个表单),然后再次添加片段,表单将保留其数据(EditText不为空)

这是我的适配器:

package com.thomas.playlists.viewPager;

import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;

import java.util.ArrayList;

public class ViewPagerAdapter extends FragmentPagerAdapter
{
    ArrayList<Fragment> mList = null;

    public ViewPagerAdapter(FragmentManager fm)
    {
        super(fm);
        mList = new ArrayList<Fragment>();
    }

    public void add(Fragment fragment)
    {
        mList.add(fragment);
    }

    public void removeLast()
    {
        if(mList.size() > 1)
            mList.remove(getCount() - 1);
    }

    @Override
    public Fragment getItem(int i)
    {
        return mList.get(i);
    }

    @Override
    public int getCount()
    {
        return mList.size();
    }
}
删除页面(仍在主活动中):

我怎样才能正确地移除碎片

编辑:我尝试过,但表单未重置


编辑2:实例化第二个片段后,不会调用其
onCreate()
方法。

扩展FragmentStatePagerAdapter,并覆盖
getItemPosition
方法:

public class ViewPagerAdapter extends FragmentStatePagerAdapter
{
    //... your existing code

    @Override
    public int getItemPosition(Object object) {
        int position = mList.indexOf(object);
        return position == -1 ? POSITION_NONE : position;
    }
}

请参阅我的编辑,它不起作用:/。请在notifydatasetchangedi尝试并使用其working@koutuk什么事也没发生它不起作用。如果我在ViewPager中添加了一个新片段(与我的表单不同),表单仍会显示,而不是新片段。此外,FragmentPagerAdapter不工作,但FragmentStatePagerAdapter工作。为什么?谢谢你,你救了我一天
mViewPagerAdapter.removeLast();
mViewPagerAdapter.notifyDataSetChanged();
mViewPager.setCurrentItem(mViewPagerAdapter.getCount() - 1, true);
public class ViewPagerAdapter extends FragmentStatePagerAdapter
{
    //... your existing code

    @Override
    public int getItemPosition(Object object) {
        int position = mList.indexOf(object);
        return position == -1 ? POSITION_NONE : position;
    }
}