返回
导航主activity获取fragment实例的详细步骤与讲解
Android
2023-12-24 00:58:20
导航的主activity中要获取fragment的实例,首先我们可以通过获取到navHostFragment实例,而我们想要获取的fragment实例是在navHostFragment中的。在具体操作上,我们有两种方案可以选择:
-
使用findFragmentById()方法
NavHostFragment navHostFragment = (NavHostFragment) getSupportFragmentManager().findFragmentById(R.id.nav_host_fragment); Fragment fragment = navHostFragment.getChildFragmentManager().findFragmentById(R.id.fragment);
-
使用getChildFragmentManager()方法
FragmentManager childFragmentManager = getSupportFragmentManager().findFragmentById(R.id.nav_host_fragment).getChildFragmentManager(); Fragment fragment = childFragmentManager.findFragmentById(R.id.fragment);
无论使用哪种方案,都能够顺利地获取到fragment实例。但是,我们还需要注意一个问题:如果当前fragment没有被添加到视图中,那么通过以上两种方式是无法获取到fragment实例的。为了避免出现这种情况,我们可以使用getChildFragmentManager().getFragments()方法来获取所有已经添加到视图中的fragment实例。
FragmentManager childFragmentManager = getSupportFragmentManager().findFragmentById(R.id.nav_host_fragment).getChildFragmentManager();
List<Fragment> fragments = childFragmentManager.getFragments();
for (Fragment fragment : fragments) {
if (fragment instanceof MyFragment) {
// do something with fragment
}
}
至此,关于navigation主activity获取fragment实例的详细步骤与讲解就介绍完了。希望对大家有所帮助!