FragmentContainerView 和 app:navGraph - 此导航图未引用任何布局文件
Posted
技术标签:
【中文标题】FragmentContainerView 和 app:navGraph - 此导航图未引用任何布局文件【英文标题】:FragmentContainerView and app:navGraph - This navigation graph is not referenced to any layout files 【发布时间】:2020-06-13 15:09:04 【问题描述】:为了防止在升级到最新片段(1.2.2 版本)和导航(2.2.1 版本)后出现 Lint 警告(将 fragment
替换为 FragmentContainerView
),我将片段替换为 FragmentContainerView
<androidx.fragment.app.FragmentContainerView
android:id="@+id/nav_host_fragment"
android:name="androidx.navigation.fragment.NavHostFragment"
....
app:defaultNavHost="true"
app:navGraph="@navigation/nav_graph" />
但在那之后我在@navigation/nav_graph
中发现了错误 - 此导航图未引用任何布局文件
一切正常,但那个错误很烦人。
【问题讨论】:
看起来我们只需要忽略此错误,因为我在 github.com/android/architecture-components-samples/tree/master/… 上看到导航图的相同错误 您使用的是什么版本的 Android Studio? @ianhanniballake 我正在使用最新的稳定版 => AS 3.6.0 和 3.6.1 这能回答你的问题吗? Using FragmentContainerView with Navigation component? @Rule,不幸的是,没有帮助。 【参考方案1】:有相同的“错误”警告,似乎它将在未来的版本中修复。同时,正如 Android Studio 建议的那样,可以使用以下命令安全地忽略警告:
<navigation
...
xmlns:tools="http://schemas.android.com/tools"
tools:ignore="UnusedNavigation" />
【讨论】:
【参考方案2】:我有同样的错误,但是该应用程序可以正常编译并且可以正常工作。我想我们必须等待下一个稳定版本中的修复。
【讨论】:
【参考方案3】:您需要在 build.gradle(app) 中更新到最新版本的 navigation-fragment-ktx
def nav_version = "2.3.0-alpha03"
implementation "androidx.navigation:navigation-fragment-ktx:$nav_version"
implementation "androidx.navigation:navigation-ui-ktx:$nav_version"
【讨论】:
【参考方案4】:这可能是我理解错了,但如果一切正常,这可能是 Android Studio 需要一些缓存清除和重新启动的典型案例。甚至可以从您的项目中手动删除构建文件夹。
【讨论】:
不,我尝试了 clean/sync gradle/refresh/invalidate 等。只有当我将 FragmentContainerView 恢复为 Fragment 时,错误才会消失。看起来经典的谷歌因“稳定”库而失败:) 现在,我只是用工具抑制错误:ignore="UnusedNavigation"以上是关于FragmentContainerView 和 app:navGraph - 此导航图未引用任何布局文件的主要内容,如果未能解决你的问题,请参考以下文章
使用 androidx.fragment.app.FragmentContainerView 时出现 ClassNotFoundException
片段不使用 FragmentContainerView 切换
FragmentContainerView 中未调用/显示 OnMapReady
膨胀类android.fragment.app.FragmentContainerView时出错,有人可以告诉我我缺少啥