navigation主activity获取fragment实例

2,663 阅读1分钟

navigation的主activity中要获取fragment的实例,首先我们可以通过

val navHostFragment = supportFragmentManager.findFragmentById(R.id.nav_host) as NavHostFragment

获取到navHostFragment实例,而我们想要获取的fragment实例是在navHostFragment包裹中,所以我们可以通过

val mainFragment = navHostFragment.childFragmentManager.fragments[0] as MainFragment

来获取到我们的主fragment。

但是,这里有一个点需要注意的,因为navigation是在onCreat中创建的,因此,如果我们在onCreat去调用上面的方法,会发现报null的问题。因此,我们可以在onStart中去执行上面的代码。

val navHostFragment =    supportFragmentManager.findFragmentById(R.id.nav_host) as NavHostFragment
val mainFragment = navHostFragment.childFragmentManager.fragments[0] as MainFragment

以上,记录一个小知识点,有更好办法获取,也请大家分享~