1
public class PagerAdapter extends FragmentStatePagerAdapter{

    public PagerAdapter(FragmentManager fm) {
        super(fm);
        // TODO Auto-generated constructor stub
    }


    @Override
    public Fragment getItem(int i) {
        // TODO Auto-generated method stub

        return mListOfImagePanel.get(i);


    }


    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return mListOfImagePanel.size();
    }

    @Override
    public CharSequence getPageTitle(int position) {
        // TODO Auto-generated method stub

        doOnce();
        return mListOfImagePanelNames.get(position);
    }

}

}

这是我用来删除片段的方法

private void deleteImagePanelFromDrawerLayout(int whichPanel){




    mListOfImagePanel.remove(whichPanel); // This is the ArrayList of fragment
    mListOfImagePanelNames.remove(whichPanel); // Don't care about this one
    mImagePanelSaveDatas.remove(whichPanel); // Don't care about this one



    adapter.notifyDataSetChanged(); // PagerAdapter

    mFlip.setOffscreenPageLimit(mListOfImagePanel.size()); //ViewPager



}

问题是,使用该方法似乎没有发生任何事情,我选择销毁的片段上没有 OnDestroy 调用。

到目前为止唯一有效的方法是 getItemPosition 技巧,但我不能使用它,因为它会破坏所有片段并重新创建它们,并且由于我的片段具有动态内容,因此删除所有内容并重新创建效率不高。

那么有没有办法专门从片段的 ArrayList 中删除特定的片段。并有效地更新适配器?

4

0 回答 0