作者henry4343 (henry)
看板AndroidDev
标题[问题] fragmentManager造成DrawerLayout不顺?
时间Fri Apr 11 09:56:01 2014
请问一下各位
我使用了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://webptt.com/cn.aspx?n=bbs/AndroidDev/M.1397181363.A.54B.html
1F:→ mshockwave:如果等fragment载完再关掉drawerlayout呢? 04/11 11:45
2F:→ henry4343:我有试过,会停一下然後很顺的滑回去,但感觉怪怪的 04/11 12:59
3F:→ henry4343:我想做到像youtube一样滑回去的同时载入fragment 04/11 13:00
4F:→ henry4343:但我不确定youtube是否为同一个fragment还是跟我一样 04/11 13:00
5F:推 slemonade:左侧menu跟右侧画面放在同一个水平linearlayout下,分别 04/11 13:48
6F:→ slemonade:设定visible 04/11 13:48
7F:→ henry4343:我是使用内建的drawlayout去实作的.. 04/11 14:51
8F:推 tac0wu:你的资料量是上网去抓去db捞的资料量吗 04/11 19:56
9F:→ tac0wu:还是画面的复杂程度 04/11 19:56
10F:→ henry4343:我的资料其实很简单,感觉是replace framgment时有问题 04/11 23:03
11F:→ henry4343:目前用假资料,用arraylist放string然後listview印出 04/11 23:04
12F:→ henry4343:会顿我也觉得很奇怪 04/11 23:04
13F:推 tac0wu:你fragment的layout设计的很复杂? 太多深太多view太滥用 04/12 12:45
14F:→ tac0wu:relative layout? 04/12 12:45
15F:推 tac0wu:看你之前的回应 是你Fragment载入的时间是可以让使用者察觉 04/12 12:55
16F:→ tac0wu:的到的 若是你要适用 这种方法 先将replace一个waiting的 04/12 12:56
17F:→ tac0wu:fragment or 画面 然後就关闭drawer 等到 fragment载好在放 04/12 12:56
18F:→ tac0wu:入? 04/12 12:56
19F:推 slemonade:上次的建议看来不适合你,换第二种方法建议:如果是同一 04/12 17:14
20F:→ slemonade:个fragment,不要用replace…请用detach隐藏,attach替 04/12 17:15
21F:→ slemonade:代replace 04/12 17:15
22F:→ henry4343:是不同的fragment,所以需要用replace,画面就list view 04/12 19:38
23F:→ henry4343:然後我custom成card ui,我有试过把replace注解掉就顺 04/12 19:39
24F:→ henry4343:所以应该不是new fragment的问题,我在试试其他方法 04/12 19:40
25F:→ henry4343:感谢:) 04/12 19:41
26F:推 slemonade:Fragment的最佳做法(个人认为),应该是我上才的回文 04/12 21:16
27F:→ slemonade:方式,该方式不限於同个fragment;将会使用到的fragment 04/12 21:16
28F:→ slemonade:宣告成该activity的全域变数,使用findfragmentbytag的 04/12 21:16
29F:→ slemonade:方式出始化,这样才能保证使用同一个fragment不会被new 04/12 21:16
30F:→ slemonade:两次;方便看一下程式码吗? 04/12 21:16
31F:推 givemepass:我是用isadd()来判断是否加入container 如果有就show 04/12 21:55
32F:→ givemepass:没有就add 这样只会第一次慢而已 它不会重新attach 04/12 21:55
33F:→ givemepass:如果要换的 要用hide 这样应该可以达成你要的效果 04/12 21:56
34F:→ henry4343:感谢楼上,我用show跟add实作,现在只有第一次会慢 04/17 11:07
35F:→ henry4343:但有个小问题,fragment show的时候不会触发onresume 04/17 11:08
36F:→ henry4343:请问fragment该怎麽知道被show了?因为需要reload资料 04/17 11:09
37F:→ henry4343:感谢!!!!! 04/17 11:09