我正在使用一个带有FragmentPagerAdapter的Viewpager来允许添加和删除页面.每页显示从互联网获取的数据.
当添加新页面时,新的片段与该页面相关联.数据通过AsyncTask获取并显示在片段中.当用户选择删除页面时,想法是销毁页面和关联的片段.
一般来说,这一切都很好.我看到的问题如下:
>您有三页数据:
[第1页] [第2页] [第3页]
>删除除最后一页之外的任何页面,如第2页;根据需要消失:
[第1页] [第3页]
>添加新页面;但是,新页面不是一个空白的页面,而是从第3页显示数据(视图).
[第1页] [第3页] [第4页,但显示第3页的观点/数据应为空白]
// Destroy fragment for this page DataListFragment curFrag = getFragmentByName(currentPage); FragmentManager fm = getSupportFragmentManager(); fm.beginTransaction().remove(curFrag).commit(); fm.executePendingTransactions(); curFrag = null; // Remove page and update adapter mPageTitles.remove(position); mAdapter.notifyDataSetChanged();
使用调试器,它显示在执行executePendingTransactions()调用后,该片段从FragmentManager中删除.但是在FrampePagerAdapters调用mAdapter.notifyDataSetChanged()中,片段被添加回来,然后在创建新页面时显示.
我尝试使用FrameStatePagerAdapter,因为这应该允许破坏碎片,但它没有工作.在我的FragmentPagerAdapter的getItemPosition()方法中,我使用返回FragmentAdapter.POSITION_NONE;正如我遇到的另一篇SO文章所指出的.
似乎该页面的View不会被销毁,而是添加到新页面中.我尝试在新页面的视图上使用removeViewAt()方法,但是没有起作用.
作为新的,我相信我错过了一些明显的东西