接上一篇的博文:Android fragment 切换加载数据卡顿问题,想到的办法就是把切换之前的fragmenthide隐藏起来,就可以解决卡顿的问题,不用重新new一个fragment。由于左侧悬浮菜单有差不多10多个菜单,如果每一个菜单切换的时候,都要隐藏其余所有的菜单,那就会导致代码十分的臃肿,以前隐藏的代码是这样的:
/*if (!openPositionFragment.isAdded()) { // 先判断是否被add过
transaction.hide(priceFragment)
.add(R.id.fragment_container, openPositionFragment)
.commit(); // 隐藏当前的fragment,add下一个到Activity中
titleView.setText(openPositionFragment.getFragmentTitle());
} else {
transaction.hide(priceFragment).show(openPositionFragment)
.commit(); // 隐藏当前的fragment,显示下一个
titleView.setText(openPositionFragment.getFragmentTitle());
}*/
每一个菜单按钮下的点击事件,都要写一段这样的代码,而且局限是只能隐藏一个,导致切换的时候有重叠问题,无法正确显示。
解决的方案是:
先隐藏所有的fragment,然后进入点击事件,如果该fragment已经实例化,那就show就好,如果没有还未实例化,那就先new一个,然后show,最后一定记得commit,我就是由于没写这句代码导致空指针异常。还有一点注意的是必须先实例化你第一个进入的fragment。修改之后的代码如下:
private void initOpenMenuItem(View popupWindow_view)

本文探讨了在Android中处理多个Fragment切换时出现的重叠和隐藏问题。通过首先隐藏所有Fragment,然后根据点击事件显示相应Fragment,可以有效避免卡顿和重叠。同时,文章提出了隐藏Fragment后后台数据加载可能导致内存占用过多的疑问。
最低0.47元/天 解锁文章
4133

被折叠的 条评论
为什么被折叠?



