对于Android中,Fragment快速且无隐患的Kotlin拓展方法封装(万金油版)

1.主要用到了以下功能:

添加Fragment


替换Fragment

2.Fragment的无损添加

//TODO 新加载一个Fragment。
fun AppCompatActivity.ext_addNewFragment(new_add_fragment: Fragment, container_view_id: Int = R.id.forget_password_fragment,/* hide_fragment_list: List<Fragment> = listOf(),*/ need_back_from_stack: Boolean = false) {

    val transaction = this.supportFragmentManager.beginTransaction()

    transaction?.add(container_view_id, new_add_fragment)       //新加
    transaction?.show(new_add_fragment)                         //显示

//    hide_fragment_list.forEach {
//        transaction.hide(it)                                    //隐藏其它
//    }
    if (need_back_from_stack) {
        transaction?.addToBackStack(null)                   //加入回退栈。                   //TODO 并且,如果按照默认模式来的话,返回键,就会从栈顶一直清空到栈底的。(默认的【返回操作】)。(当然,你也可以自己在onBackPress里面玩些花样)
    }
    transaction?.commit()//最终提交。
}

3.Fragment的无损极快替换

fun AppCompatActivity.ext_showOldFragment(show_old_fragment: Fragment, hide_fragment_list: List<Fragment> = listOf(), fragment_transaction_anim: Int = FragmentTransaction.TRANSIT_FRAGMENT_FADE) {


    val transaction = this.supportFragmentManager.beginTransaction()

    transaction.setTransition(fragment_transaction_anim)            //此处,可以设置转换动画。

    hide_fragment_list.forEach {
        transaction.hide(it)                                                                        //隐藏
    }
    transaction.show(show_old_fragment)                                                             //显示

    transaction.commit()                                                                            //提交

}

4.以上两点,都是可以直接拿去,在代码中开始用的。

猜你喜欢

转载自blog.csdn.net/hanshou101/article/details/81080917
今日推荐