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

相關問題