viewpager中彻底性动态添加、删除Fragment
来源:互联网 发布:软件开发技术总监 编辑:程序博客网 时间:2024/05/18 11:37
版权声明:本文为博主原创文章,未经博主允许不得转载。
拿自己的项目使用情况来说,开始以为viewpager的页数是定的,但最后才知道是动态改变的,不仅可以增加,还要动态的删除!!!这个实时动作真的很折腾,增加是没有问题的,但是减少却不如我们所愿,总是有残留的布局在占着位子,挥之不去,无论你怎么clear、remove都于是无补,因为我不懂它的实现机制,so,真心被动。折腾了好几天,终于在stackoverflow上找到了问题的根源,结合自己项目实际情况解决了自己的问题,详情见下文。
所以说:软件开发有两种东西是不可或缺的--1.勇于尝试;2.良好的英文阅读能力!!
项目使用情况:viewpager+FragmentPagerAdapter+fragment,交互逻辑放置在fragment中;
1.主activity中的动态动态增删逻辑,因为涉及到动态 刷新,所以在每次动态添加之前要先将其清空一下
从代码中可以看出我已经做过了各种尝试,哎,解决一个问题真的比首次开发难度大多了。
2.最关键的地方出来了:--pagerAdapter, 一定要替换成下文的样式才能正常删除fragment
注:引用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。
为了解决彻底删除fragment,我们要做的是:
1.将FragmentPagerAdapter 替换成FragmentStatePagerAdapter,因为前者只要加载过,fragment中的视图就一直在内存中,在这个过程中无论你怎么刷新,清除都是无用的,直至程序退出; 后者 可以满足我们的需求。
2.我们可以重写Adapter的方法--getItemPosition(),让其返回PagerAdapter.POSITION_NONE即可;
到这一步我们就可以真正的实现随意、彻底删除viewpager中的fragment;[随意添加完全OK]
最后重申一句:一定要训练阅读外文文献、网页的能力!
http://stackoverflow.com/questions/10396321/remove-fragment-page-from-viewpager-in-android
对于国内的问题解决办法的大抄特抄现象,我只能说:呵呵, 搜一个关键字,前5条都是一样的,从第一条一直抄袭到第5条、 哎、、
今天周六,过来加班,这个问题上周bug库里就有了,一直没解决,现在知道根源所在,也就有点小轻松了,接下来就要搞viewpager+fragment的循环实现了,也是个麻烦,,加油吧。
- viewpager中彻底性动态添加、删除Fragment
- viewpager中彻底性动态添加、删除Fragment
- viewpager中彻底性动态添加、删除Fragment
- viewpager中彻底性动态添加、删除Fragment
- viewpager中彻底性动态添加、删除Fragment
- viewpager中动态添加、删除Fragment
- Android中使用ViewPager+Fragment动态删除添加Fragment问题
- Viewpager动态添加删除Fragment
- viewpager+fragment 动态添加删除
- viewpager+fragment 动态添加删除
- ViewPager中添加和删除Fragment
- ViewPager中动态删除Fragment的方法
- ViewPager 动态删除Fragment
- ViewPager Fragment动态添加以及动态删除的理解
- 动态修改viewpager里面的fragment(添加和删除)
- ViewPager+Fragmnet组合动态添加和删除Fragment
- fragment中添加ViewPager实现界面切换,动态添加radiobutton
- 关于Viewpager中动态添加一个Fragment的做法
- 闪耀国际滨,追梦正青春
- 域名与IP地址的联系与区别
- 电子商务网站中订单号设计有什么规则和依
- Kotlin 从入门到实战(二)
- ios NSlog打印日志
- viewpager中彻底性动态添加、删除Fragment
- CSDN-markdown编辑器_篇1
- Java
- Android N(7.0) 编译出现ninja_wrapper Error
- 软件开发概述和Java语言概述、Java配置
- Linux系统文件与文件夹权限设置
- java编程_servlet
- CSS基础-CSS显示模式 12
- UML图中类之间的关系:依赖,泛化,关联,聚合,组合,实现