fragment 动态加载,删除
来源:互联网 发布:淘宝总部投诉电话地址 编辑:程序博客网 时间:2024/06/06 01:17
2、最关键的地方出来了:--pagerAdapter, 一定要替换成下文的样式才能正常删除fragment
以下为引用内容:public class HomePageAdapter extends FragmentStatePagerAdapter {//FragmentPagerAdapter//private FragmentManager fm;private ArrayList<Fragment> fragments = null;private List<HotIssues> hotIssuesList;private Context context;public HomePageAdapter(Context context, FragmentManager fm, ArrayList<Fragment> fragments) {super(fm);this.context = context;this.fragments = fragments;notifyDataSetChanged();}public HomePageAdapter(Context context, FragmentManager fm, List<HotIssues> hotIssuesList) {super(fm);this.context = context;this.hotIssuesList = hotIssuesList;notifyDataSetChanged();//this.fragments = fragments;}@Overridepublic Fragment getItem(int arg0) {//Fragment fragment = new ColourFragment();//Bundle args = new Bundle();//args.putInt("title", arg0);//args.putSerializable("content",hotIssuesList.get(arg0));//fragment.setArguments(args);//return fragment;return fragments.get(arg0);}@Overridepublic int getItemPosition(Object object) {// TODO Auto-generated method stubreturn PagerAdapter.POSITION_NONE;}@Overridepublic int getCount() {return fragments.size();//hotIssuesList.size();}}
注:引用stackoverflow牛人的解决说明:
The ViewPager doesn't remove your fragments with the code above because it loads several views (or fragments in your case) into memory. In addition to the visible view, it also loads the view to either side of the visible one. This provides the smooth scrolling from view to view that makes the ViewPager so cool.
To achieve the effect you want, you need to do a couple of things.
Change the FragmentPagerAdapter to a FragmentStatePagerAdapter. The reason for this is that the FragmentPagerAdapter will keep all the views that it loads into memory forever. Where the FragmentStatePagerAdapter disposes of views that fall outside the current and traversable views.
Override the adapter method getItemPosition (shown below). When we call mAdapter.notifyDataSetChanged(); the ViewPager interrogates the adapter to determine what has changed in terms of positioning. We use this method to say that everything has changed so reprocess all your view positioning。
大致意思是说:viewpager在加载当前页的时候已经将pager页左右页的内容加载进内存里了,这样才保证了viewpager左右滑动的时候的流畅性;
为了解决彻底删除fragment,我们要做的是:
1.将FragmentPagerAdapter 替换成FragmentStatePagerAdapter,因为前者只要加载过,fragment中的视图就一直在内存中,在这个过程中无论你怎么刷新,清除都是无用的,直至程序退出; 后者 可以满足我们的需求。
2.我们可以重写Adapter的方法--getItemPosition(),让其返回PagerAdapter.POSITION_NONE即可。
以下为引用内容:@Overridepublic int getItemPosition(Object object) {// TODO Auto-generated method stubreturn PagerAdapter.POSITION_NONE;}
到这一步我们就可以真正的实现随意、彻底删除viewpager中的fragment,随意添加。
- fragment 动态加载,删除
- ViewPager 动态删除Fragment
- fragment动态加载
- Fragment的动态加载
- Fragment动态加载
- 动态加载Fragment
- 动态加载Fragment
- 仿微信 Fragment 动态加载
- 动态加载fragment
- 动态加载Fragment
- 动态加载fragment
- Fragment动态加载
- 动态加载Fragment
- Fragment 动态加载
- 动态加载Fragment
- Android_动态加载Fragment
- Fragment 动态加载 / 静态加载
- Viewpager动态添加删除Fragment
- mac nodejs安装配置
- zoj 3913 Bob wants to pour water(二分)
- jquery date 添加年月日<select><option>
- 如何使用CC2540 USB-Dongle进行抓取蓝牙通讯数据包
- opencv2读取视频提取ROI区域并把ROI区域保存为图片
- fragment 动态加载,删除
- 【FAQ】xcodebuild in command line,报错:No architectures to compile for xxx,怎么办?
- Java 正则表达式
- Ubuntu14.10编译安装3.17.4内核及系统调用测试
- 数据结构:加权图的API
- jdk新特性之泛型
- POJ 1258 Agri-Net 最小生成树 Prim 算法
- 《近匠》专访小熊尼奥:从软硬结合到IP合作,AR产品的机遇
- 代码量统计方法