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
以上,记录一个小知识点,有更好办法获取,也请大家分享~