[问题] 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