[問題] fragmentManager造成DrawerLayout不順?

作者: henry4343 (henry)   2014-04-11 09:56:01
請問一下各位
我使用了DrawerLayout去做往旁邊拉出選單的功能
然後當我點了選單的時候
我會在右邊去replace新的fragment
FragmentManager fragmentManager = getSupportFragmentManager();
fragmentManager.beginTransaction()
.replace(R.id.frame_container, fragment).commit();
然後關閉旁邊選單
mDrawerLayout.closeDrawer(mDrawerList);
但是在關閉選單的時候都會卡一下,如果fragment的資料量越大時,會很明顯卡住很久
請問一下有什麼好的方法可以解決嘛?
我有嘗試過把fragment內的資料丟到thread去讀取,但還是一樣情況。
不知道問題點在哪?希望有經驗的大大幫幫忙,感謝~
作者: mshockwave (夏克維夫)   2014-04-11 11:45:00
如果等fragment載完再關掉drawerlayout呢?
作者: henry4343 (henry)   2014-04-11 12:59:00
我有試過,會停一下然後很順的滑回去,但感覺怪怪的我想做到像youtube一樣滑回去的同時載入fragment但我不確定youtube是否為同一個fragment還是跟我一樣
作者: slemonade (淳)   2014-04-11 13:48:00
左側menu跟右側畫面放在同一個水平linearlayout下,分別設定visible
作者: henry4343 (henry)   2014-04-11 14:51:00
我是使用內建的drawlayout去實作的..
作者: tac0wu (在BBS中流浪)   2014-04-11 19:56:00
你的資料量是上網去抓去db撈的資料量嗎還是畫面的複雜程度
作者: henry4343 (henry)   2014-04-11 23:03:00
我的資料其實很簡單,感覺是replace framgment時有問題目前用假資料,用arraylist放string然後listview印出會頓我也覺得很奇怪
作者: tac0wu (在BBS中流浪)   2014-04-12 12:45:00
你fragment的layout設計的很複雜? 太多深太多view太濫用relative layout?看你之前的回應 是你Fragment載入的時間是可以讓使用者察覺的到的 若是你要適用 這種方法 先將replace一個waiting的fragment or 畫面 然後就關閉drawer 等到 fragment載好在放入?
作者: slemonade (淳)   2014-04-12 17:14:00
上次的建議看來不適合你,換第二種方法建議:如果是同一個fragment,不要用replace…請用detach隱藏,attach替代replace
作者: henry4343 (henry)   2014-04-12 19:38:00
是不同的fragment,所以需要用replace,畫面就list view然後我custom成card ui,我有試過把replace注解掉就順所以應該不是new fragment的問題,我在試試其他方法感謝:)
作者: slemonade (淳)   2014-04-12 21:16:00
Fragment的最佳做法(個人認為),應該是我上才的回文方式,該方式不限於同個fragment;將會使用到的fragment宣告成該activity的全域變數,使用findfragmentbytag的方式出始化,這樣才能保證使用同一個fragment不會被new兩次;方便看一下程式碼嗎?
作者: givemepass (λ)   2014-04-12 21:55:00
我是用isadd()來判斷是否加入container 如果有就show沒有就add 這樣只會第一次慢而已 它不會重新attach如果要換的 要用hide 這樣應該可以達成你要的效果
作者: henry4343 (henry)   2014-04-17 11:07:00
感謝樓上,我用show跟add實作,現在只有第一次會慢但有個小問題,fragment show的時候不會觸發onresume請問fragment該怎麼知道被show了?因為需要reload資料感謝!!!!!

Links booklink

Contact Us: admin [ a t ] ucptt.com