Android Navigation:MainActivity does not have a NavController
Android Navigation 异常:java.lang.RuntimeException: Unable to start activity ComponentInfo{...MainActivity}: java.lang.IllegalStateException: Activity ***..**.MainActivity@*** does not have a NavController set on *****
问题代码如下所示:
NavController navController = Navigation.findNavController(this,R.id.nav_host_fragment);
NavigationUI.setupActionBarWithNavController(this, navController,appBarConfiguration);
NavigationUI.setupWithNavController(navView, navController);
尝试通过 Navigation.findNavController 方法来获取 NavigationController 对象,这是在使用 Android Studio 时创建有底部导航栏的应用时自动生成的代码。第一次运行时没有这个问题, 但是在加入了一些元素后就出现了这个问题。
按照 Android 的官方开发文档, 获取 NavigationController 对象应当使用 supportFragmentManager.findFragmentById() 方法来获取对应的 Fragment 对象后再转换为 NavHostFragment 对象, 再通过 NavHostFragment 的 getNavController() 方法来获取。
然而, 实际上并没有 supportFragmentManager 这么个类。按照驼峰命名法的原则, 这个 supportFragmentManager 应当是一个方法而不是一个对象,可能是相关文档出现了问题,应当使用 getSupportFragmentManager() 方法来替换 supportFragmentManager。
最终的解决代码如下所示:
NavHostFragment navHostFragment =(NavHostFragment) getSupportFragmentManager().findFragmentById(R.id.nav_host_fragment);
NavController navController = navHostFragment.getNavController();
NavigationUI.setupActionBarWithNavController(this, navController,appBarConfiguration);
NavigationUI.setupWithNavController(navView, navController);
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
