Android技术基础知识

Android Fragment重叠,UI重叠问题

2019-05-12  本文已影响328人  牙膏很好吃

问题现象:


一般出现在单activity+多fragment结构,当应用异常后,会可能出现这种现象

问题出现本质:


解决方案:


  1. 参考网上给出的方案,在activity的onSaveInstanceState中,不让activity保存UI状态
override fun onSaveInstanceState(outState: Bundle?, outPersistentState: PersistableBundle?) {
        //super.onSaveInstanceState(outState, outPersistentState)
}
  1. 但是,我发现在有的情况下,还是会出现UI重叠现象,下面是我自己的解决方案:
private fun addFragment() {
    val f1 = Fragment()
    val f1Tag = "f1"
    val f2 = Fragment()
    val f2Tag = "f2"
    val fragmentList= arrayListOf(Pair(f1,f1Tag), Pair(f2,f2Tag))
    supportFragmentManager.beginTransaction().also {trans->
        //首先移除之前存在fragment
        fragmentList.forEach {fm->
            val temp = supportFragmentManager.findFragmentByTag(fm.second)
            if (temp != null) {
                trans.remove(fm.first)
            }
        }
        //添加新的fragment
        fragmentList.forEach {
            trans.add(it.first,it.second).hide(it.first)
        }
        //展示第一个fragment
        trans.show(fragmentList[0].first)
    }.commitAllowingStateLoss()
}
上一篇 下一篇

猜你喜欢

热点阅读