天天看點

【PagerAdapter】Fragment的陷阱

</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誰做過,,,或者誰見過。 請教我!!!!!