2

我试图通过点击按钮动态地在ViewPager中添加/删除fragments,但如果我通过单击后退按钮并且再次添加片段,我的remove片段(表单)保留其数据(EditText不是空的)。如何删除Android ViewPager中的页面?

这里是我的适配器:

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(); 
    } 
} 

添加使用proccess两次(在主要活动中):

PlaylistFragment playlistFragment = new PlaylistFragment(); 

mViewPagerAdapter.add(playlistFragment); 
mViewPagerAdapter.notifyDataSetChanged(); 
mViewPager.setCurrentItem(mViewPagerAdapter.getCount() - 1, true); 

删除页面(仍然是主要活动):

mViewPagerAdapter.removeLast(); 
mViewPagerAdapter.notifyDataSetChanged(); 
mViewPager.setCurrentItem(mViewPagerAdapter.getCount() - 1, true); 

我如何正确删除片段?

编辑:我试过this但窗体没有重置;

编辑2:在instanciating第二个片段后,其onCreate()方法不被调用。

+0

http://stackoverflow.com/questions/10396321/remove-fragment-page-from-viewpager-in-android – koutuk 2014-10-17 11:54:50

+0

见我的编辑,它不工作:/。 – 2014-10-17 11:56:07

+0

尝试在notifydatasetchanged后mViewPager.setadapter(mViewPagerAdapter) – koutuk 2014-10-17 12:22:18

回答

8

扩展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; 
    } 
} 
+0

这不起作用。如果我添加一个新的片段(与我的表单不同)到ViewPager,表单仍然显示而不是新的片段。 – 2014-10-17 12:18:01

+0

我不知道为什么,但现在它工作! – 2014-10-17 14:16:47

+0

也是这样,FragmentPagerAdapter不起作用,但是使用FragmentStatePagerAdapter它正在工作。为什么? – Sergey 2017-10-22 12:13:51

相关问题