Android实践(一)| Fragment实现底部导航栏(解决重叠问题)

  • 时间:
  • 浏览:0
  • 来源:uu快3诀窍_uu快3app安卓_导航网

我这里为了区分Fragment页面给每个页面加带了一个TextView,具体就根据另一方的需求在Fragment中写代码就行了。

最初学习Android的后后,是边学习边做着一个小项目的,很久项目需求,须要实现一个底部导航栏的功能,很久基础知识受限,百度了很久有博客,大致就找到三种 实现方案:第三种 很久直接用Fragment实现(点击切换),第二种是ViewPager+Fragment实现(除了点击切换,还支持左右滑动切换)。根据需求使用了第三种 法律法律依据,后期产生了Fragment重叠的问題,就要我三种bug时而再次出先,也我不知道咋样定位(学生时期),就不须放下了。现在很久学习进度(系统学习Fragment),重新捡起你三种问題,就想写一篇实现功能+正确处理bug的博客,如有不够之处,请留言指教。

很久有,在重建后的的Activity中,又会重新创建Fragment的实例,很久显示出来,而后后被系统恢复的Fragment也会恢复后后的显示状况,这很久意味了多个Fragment重叠。当然,任何能意味Activity销毁重建的状况一定会产生你三种bug,比如说应用在后台时,很久内存资源不够意味Activity被kill。既然知道意味了,这麼 正确处理起来就不难 了。

这里我想到的正确处理法律法律依据是从重新创建Fragment这里着手,既然保存的状况会恢复,这麼 Activity重建的后后亲们 儿不想Fragment重新创建不就行了。具体为什么在么在会 做呢?这里还是须要熟悉Activity的生命周期。

Fragment重叠异常

这里补充你三种:切换页面也可不才能用replace法律法律依据,它和hide+show法律法律依据的直观区别很久:使用replace法律法律依据会先将fragment实例remove掉,很久重新add,这很久意味Fragment每次切换一定会重新走一遍生命周期,创建一个新的实例,不想保存每个Fragment的状况;而使用hide+show法律法律依据则仅仅是将不显示的Fragment设置为不可见,再次显示出来一定会保存状况。

里面代码中逻辑很清晰,根据注释基本可不才能看明白,具体你三种控件的用法自行百度。到这里功能就很久实现了,很久会再次出先Fragment重叠的bug。具体状况如下图:

当亲们 儿进入Activity时,首先展示第一个页面,即创建对应Fragment实例,使用add+show法律法律依据显示出来,当亲们 儿点击进入别的页面时,调用hide法律法律依据将已展示的Fragment页面隐藏(实际是设置Visiable属性为不可见),很久显示对应Fragment页面(已创建则直接调用show法律法律依据,未创建则创建,很久调用add+show法律法律依据显示)。

很久对Activity生命周期不太了解,可不才能看一看我的另一篇博客:

Android笔记(一) | Activity的生命周期

显然,销毁重建后Fragment对象所指向的实例与重建前相同。很久 亲们 儿的BottomBar就完成了!