如何获取NavHostFragment

时间:2018-06-16 01:04:27

标签: android android-fragments android-architecture-components fragmentmanager android-architecture-navigation

我将Android的导航架构组件集成到我的应用中。我在将数据传递到活动片段的开头时遇到了一些问题,所以我听到了这个答案:Navigation Architecture Component- Passing argument data to the startDestination

逻辑对我来说似乎很合理,但我正在努力确定如何实际获取NavHostFragment。 Elliot Shrock使用了这一行 -

val navHostFragment = navFragment as NavHostFragment

但是我还没有找到可用的Java等价物。 我尝试使用我的navHost片段 getSupportFragmentManager().findFragmentById(R.id.[mynavhostid])

但此命令返回null。有什么想法吗?

5 个答案:

答案 0 :(得分:1)

我先解决了包含NavHost的视图,然后使用supportFragmentManager来获取navHost片段并传入我的默认args。

希望Google的Android团队在未来为此提供更清晰的解决方案。

答案 1 :(得分:1)

请注意,由于某些原因,调试器有时会为NavHostFragment返回null,在该处代码实际上可以毫无问题地找到它。我不知道为什么,但是它可能占用了我3个小时的时间,请通过打印或使用片段确保它实际上为空!

enter image description here

答案 2 :(得分:0)

你正在努力的代码是kotlin片段:

val navHostFragment = navFragment as NavHostFragment

此代码段的等效Java代码是:

NavHostFragment navHostFragment = (NavHostFragment) findViewById(R.id.navFragment);

答案 3 :(得分:0)

这东西对我有用

 val navHostFragment = nav_host_fragment as NavHostFragment

答案 4 :(得分:0)

实际上,请验证XML中的NavHostFragement ID是否与您在代码中引用的ID匹配。