kotlin弹出显示fragment的两种方式

简介:

这里总结了显示fragment的两种方式,一种需要依靠fragment的id,另一种不需要fragment的id,但是需要继承DialogFragment。

1、依靠xml中有fragment的id显示

var transaction: FragmentTransaction? = null
var currentFragment: Fragment? = null
	/**
     * 隐藏当前的Fragment,显示传入的Fragment
     */
    fun showFragment(fg: Fragment) {
        transaction = fm.beginTransaction()
        if (!fg.isAdded()) {//如果之前没有添加过
            if (currentFragment != null) {//第一次进入是为空,就不用隐藏currentFragment
                Log.d(TAG, "" + fg.tag)
                transaction!!.hide(currentFragment!!).add(R.id.mainFrame, fg, fg.tag) //第三个参数为当前的fragment绑定一个tag,tag为当前绑定fragment的类名
            } else {
                transaction!!.add(R.id.mainFrame, fg, fg.tag)
            }
        } else {
            transaction!!.hide(currentFragment!!).show(fg)
        }
        currentFragment = fg
        transaction!!.commit()
    }

2、不需要xml中有fragment就可以显示

注意:显示的fragment需要继承DialogFragment

val fragmentManager: FragmentManager = activity!!.supportFragmentManager
val testFragment = TestFragment()
lLEDSettingFragment.show(fragmentManager, "LEDSettingFragment")

你可能感兴趣的:(基础)