本文介绍了FragmentContainerView 作为 NavHostFragment的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

似乎使用 FragmentContainerView 不能直接使用?

Seems like using the FragmentContainerView doesn't work right out of the box?

<androidx.fragment.app.FragmentContainerView
        class="androidx.navigation.fragment.NavHostFragment"
        android:id="@+id/fragment_nav_host"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:defaultNavHost="true"
        app:navGraph="@navigation/nav_app" />

这是我使用 fragment-ktx:1.2.0-rc01 的代码,但我总是遇到这个错误:

Here's my code using fragment-ktx:1.2.0-rc01 and I'm just always getting this error:

Caused by: java.lang.IllegalStateException: Activity ...MainActivity@797467d does not have a NavController set on 2131296504

只需使用 <fragment> 就可以了,而且 AFAIK,它应该被 FragmentContainerView 替换.

Just using <fragment> works and AFAIK, it's just supposed to be replaced by FragmentContainerView.

我是否遗漏了什么,或者是否有人能够将 FragmentContainerView 用作 NavHostFragment?

Am I missing something or was anyone able to use FragmentContainerView as a NavHostFragment?

非常感谢!

推荐答案

由于这个错误报告:https://issuetracker.google.com/issues/142847973

这是唯一的方法(目前):

This is the only way (currently):

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

(Java):

NavHostFragment navHostFragment =
    (NavHostFragment) getSupportFragmentManager()
        .findFragmentById(R.id.my_nav_host_fragment);
NavController navController = navHostFragment.getNavController();

这篇关于FragmentContainerView 作为 NavHostFragment的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-09 08:30