kotlin 切换 fragment

private fun switchFragment(targetFragment: AvatalkBaseFragment, tag:String) {
        kotlin.runCatching {
            LogUtils.d("FaceFragment switchFragment tag:$tag")
            val beginTransaction = childFragmentManager.beginTransaction()
            if (mCurrentFragment != targetFragment) {
                mCurrentFragment?.let {
                    beginTransaction.hide(it)
                }
                if (targetFragment.isAdded) {
                    beginTransaction.show(targetFragment)
                } else {
                    val fragmentByTag = childFragmentManager.findFragmentByTag(tag)
                    if (fragmentByTag != null) {
                        beginTransaction.show(fragmentByTag)
                    } else {
                        beginTransaction.remove(targetFragment).commitAllowingStateLoss()
                        beginTransaction.add(com.mesa.android.im.uikit.R.id.faceContainer, targetFragment, tag)
                    }
                }
            } else {
                if (!targetFragment.isAdded) {
                    val fragmentByTag = childFragmentManager.findFragmentByTag(tag)
                    if (fragmentByTag != null) {
                        beginTransaction.show(fragmentByTag)
                    } else {
                        beginTransaction.remove(targetFragment).commitAllowingStateLoss()
                        beginTransaction.add(com.mesa.android.im.uikit.R.id.faceContainer, targetFragment, tag)
                    }
                }
            }
            mCurrentFragment = targetFragment
            beginTransaction.commitAllowingStateLoss()
        }.getOrElse {
            LogUtils.printStackTrace(it)
        }
    }

版权声明:本文为lujianfeiccie2009原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。