How I can retrieve current fragment in NavHostFragment?

后端 未结 8 1376
遇见更好的自我
遇见更好的自我 2020-12-15 17:06

I tried to find a method in the new Navigation components but I didn\'t find anything about that.

I have the current destination with :

mainHostFrag         


        
8条回答
  •  半阙折子戏
    2020-12-15 17:33

    Using Michal's answer I wrote this extension function for testing:

    @Suppress("UNCHECKED_CAST")
    fun  AppCompatActivity.getFragment(fragmentClass: Class): F? {
        val navHostFragment = this.supportFragmentManager.fragments.first() as NavHostFragment
    
        navHostFragment.childFragmentManager.fragments.forEach {
            if (fragmentClass.isAssignableFrom(it.javaClass)) {
                return it as F
            }
        }
    
        return null
    }
    

    Used like this:

    val myFragment = activity.getFragment(MyFragment::class.java)
    

提交回复
热议问题