您的位置:首页 > 其它

【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谁做过,,,或者谁见过。 请教我!!!!!

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: