[問題] fragmentManager造成DrawerLayout不順?

看板AndroidDev作者 (henry)時間11年前 (2014/04/11 09:56), 編輯推噓7(7030)
留言37則, 5人參與, 最新討論串1/1
請問一下各位 我使用了DrawerLayout去做往旁邊拉出選單的功能 然後當我點了選單的時候 我會在右邊去replace新的fragment FragmentManager fragmentManager = getSupportFragmentManager(); fragmentManager.beginTransaction() .replace(R.id.frame_container, fragment).commit(); 然後關閉旁邊選單 mDrawerLayout.closeDrawer(mDrawerList); 但是在關閉選單的時候都會卡一下,如果fragment的資料量越大時,會很明顯卡住很久 請問一下有什麼好的方法可以解決嘛? 我有嘗試過把fragment內的資料丟到thread去讀取,但還是一樣情況。 不知道問題點在哪?希望有經驗的大大幫幫忙,感謝~ -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 124.11.17.212 ※ 文章網址: http://www.ptt.cc/bbs/AndroidDev/M.1397181363.A.54B.html

04/11 11:45, , 1F
如果等fragment載完再關掉drawerlayout呢?
04/11 11:45, 1F

04/11 12:59, , 2F
我有試過,會停一下然後很順的滑回去,但感覺怪怪的
04/11 12:59, 2F

04/11 13:00, , 3F
我想做到像youtube一樣滑回去的同時載入fragment
04/11 13:00, 3F

04/11 13:00, , 4F
但我不確定youtube是否為同一個fragment還是跟我一樣
04/11 13:00, 4F

04/11 13:48, , 5F
左側menu跟右側畫面放在同一個水平linearlayout下,分別
04/11 13:48, 5F

04/11 13:48, , 6F
設定visible
04/11 13:48, 6F

04/11 14:51, , 7F
我是使用內建的drawlayout去實作的..
04/11 14:51, 7F

04/11 19:56, , 8F
你的資料量是上網去抓去db撈的資料量嗎
04/11 19:56, 8F

04/11 19:56, , 9F
還是畫面的複雜程度
04/11 19:56, 9F

04/11 23:03, , 10F
我的資料其實很簡單,感覺是replace framgment時有問題
04/11 23:03, 10F

04/11 23:04, , 11F
目前用假資料,用arraylist放string然後listview印出
04/11 23:04, 11F

04/11 23:04, , 12F
會頓我也覺得很奇怪
04/11 23:04, 12F

04/12 12:45, , 13F
你fragment的layout設計的很複雜? 太多深太多view太濫用
04/12 12:45, 13F

04/12 12:45, , 14F
relative layout?
04/12 12:45, 14F

04/12 12:55, , 15F
看你之前的回應 是你Fragment載入的時間是可以讓使用者察覺
04/12 12:55, 15F

04/12 12:56, , 16F
的到的 若是你要適用 這種方法 先將replace一個waiting的
04/12 12:56, 16F

04/12 12:56, , 17F
fragment or 畫面 然後就關閉drawer 等到 fragment載好在放
04/12 12:56, 17F

04/12 12:56, , 18F
入?
04/12 12:56, 18F

04/12 17:14, , 19F
上次的建議看來不適合你,換第二種方法建議:如果是同一
04/12 17:14, 19F

04/12 17:15, , 20F
個fragment,不要用replace…請用detach隱藏,attach替
04/12 17:15, 20F

04/12 17:15, , 21F
代replace
04/12 17:15, 21F

04/12 19:38, , 22F
是不同的fragment,所以需要用replace,畫面就list view
04/12 19:38, 22F

04/12 19:39, , 23F
然後我custom成card ui,我有試過把replace注解掉就順
04/12 19:39, 23F

04/12 19:40, , 24F
所以應該不是new fragment的問題,我在試試其他方法
04/12 19:40, 24F

04/12 19:41, , 25F
感謝:)
04/12 19:41, 25F

04/12 21:16, , 26F
Fragment的最佳做法(個人認為),應該是我上才的回文
04/12 21:16, 26F

04/12 21:16, , 27F
方式,該方式不限於同個fragment;將會使用到的fragment
04/12 21:16, 27F

04/12 21:16, , 28F
宣告成該activity的全域變數,使用findfragmentbytag的
04/12 21:16, 28F

04/12 21:16, , 29F
方式出始化,這樣才能保證使用同一個fragment不會被new
04/12 21:16, 29F

04/12 21:16, , 30F
兩次;方便看一下程式碼嗎?
04/12 21:16, 30F

04/12 21:55, , 31F
我是用isadd()來判斷是否加入container 如果有就show
04/12 21:55, 31F

04/12 21:55, , 32F
沒有就add 這樣只會第一次慢而已 它不會重新attach
04/12 21:55, 32F

04/12 21:56, , 33F
如果要換的 要用hide 這樣應該可以達成你要的效果
04/12 21:56, 33F

04/17 11:07, , 34F
感謝樓上,我用show跟add實作,現在只有第一次會慢
04/17 11:07, 34F

04/17 11:08, , 35F
但有個小問題,fragment show的時候不會觸發onresume
04/17 11:08, 35F

04/17 11:09, , 36F
請問fragment該怎麼知道被show了?因為需要reload資料
04/17 11:09, 36F

04/17 11:09, , 37F
感謝!!!!!
04/17 11:09, 37F
文章代碼(AID): #1JHqkpLB (AndroidDev)