【PagerAdapter】Fragment的陷阱
2015-06-01 04:03
190 查看
</pre>最近做的项目太过奇葩,遇到的问题也挺多,说下今天遇到的问题。<p></p><p>2015--06--01 4:03</p><p>这是一个深夜,想到我的项目就彻夜不能眠,我始终相信刚工作都是这么挺过去的,满心思都是项目,技术,没心思去玩去弹琴唱歌 每天过的很压抑,因为。。感觉自己什么都不会。</p><p>最近公司的项目大体逻辑就是。左右无限翻动,上下无限翻动 你没看错,左右拉加载,上下拉加载或者刷新。这种功能以前从没做过 顶多做过左右拉<strong>ViewPager</strong></p><p><strong>刚开始的几天为了这个模型我蛋疼得要死,还得学习上下啦刷新,从ViewPager+ListView(刷新加载)到ViewPager+Fragment再到ViewPager+纵向ViewPager又回到ViewPager+Fragment(上下滑动切换Fragment) 这蛋疼的节奏显然是一个萌哒哒的初级安卓程序员的作为。</strong></p><p><strong>再使用Fragment的时候出现的最大的一个问题就是 数据加载紊乱,今晚终于解决,因为Adapter都有预加载的功能,我现在显示A页面的时候 Adapter已经跑去实例化B页面去了,根据执行顺序 顺带把我的init()方法也执行了,那么问题就来了,我B页面init()肯定是加载的B页面里的Fragment事务 ,他这么一预加载 直接导致在A显示B页面里的Fragment了 。。。</strong></p><p><strong>解决方案就是在Fragment里判断 当前 Fragment是否是可见状态,如果是的话就去加载数据,否则什么都不干,比如:</strong></p><p><strong>boolean flag = false;</strong></p><p><strong></strong></p><pre name="code" class="java"> <pre name="code" class="java">@Override public void setUserVisibleHint(boolean isVisibleToUser) { super.setUserVisibleHint(isVisibleToUser); // if (isVisibleToUser && isVisible()) { if (isVisibleToUser) { // 表示本Fragment 虽然可见 但是还没有初始化 if (!flag) { init(); flag = true; } else { } } else { } }
我加的一个flag表示当前页面是不是已经加载过,
不知道我有没有表达清楚、、、、、
到最后问个问题 ,希望大牛看见能 回答我一下
项目业务就是 上下拉加载不同布局的页面,这些页面至少一百张,也就是说你在下拉之前不知道他布局是如何的 只能通过服务器的json来指定控件的显示位置
天真的我以为ViewPager横向我写十张布局,纵向的Fragment让他们复用同一个布局 只是填充内容就行了,结果经理说我们的布局全部不一样,你把布局控件什么的全在java代码里实现 我当时就,,,(也就是说一个应用除了基本设置 登录 分享的小界面 主界面就是有N张不同布局的页面组成)
斗胆问一句 这样的App谁做过,,,或者谁见过。 请教我!!!!!
相关文章推荐
- i春秋:警惕您站上的文件扩展名绕过漏洞
- i春秋:警惕您站上的MIME类型绕过漏洞
- i春秋:通过案例学安全—再现杰奇网站漏洞环境
- Python 4- more operations
- MAC MySQL乱码问题解决路径
- CFHTTP使用SSL很慢的解决方法
- 【译】使用Rails 4.2+ 测试异步邮件系统
- 我也学算法 - KMP算法
- CoreData 多线程处理大量数据同步时的操作
- 教你开通超级QQ,
- C++对象模型之复制构造函数的构造操作
- 作为第一期iOS基础班学生,MJ广东开校之我见(原稿)
- java 打印出两个IP之间的所有IP值
- 自己的路删除
- YouCompleteMe实现vim自动补全
- ubunu下用命令设置壁纸
- 程序员、编程常用术语
- Mastering "Product Flavors" on Android
- 申请Bing Search API
- C语言程序设计笔记(二)