导航错误 - 此导航图未引用任何布局文件?
Navigation error - This navigation graph is not referenced to any layout files?
我正在尝试将 navigation
功能应用于我的项目。
我有这个错误:
This navigation graph is not referenced to any layout files(expected to find it in at least one layout file with a NavHostFragment with app:navGraph="@navigation/@navigation" attribute
<?xml version="1.0" encoding="utf-8"?>
<navigation xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/navigation"
android:label="fragment_init"
app:startDestination="@id/initFragment"
>
<fragment
android:id="@+id/initFragment"
android:label="fragment_init"
tools:layout="@layout/fragment_init">
<action
android:id="@+id/action_initFragment_to_authenticationFragment5"
app:destination="@id/authenticationFragment"
/>
<action
android:id="@+id/action_initFragment_to_settingFragment3"
app:destination="@id/settingFragment" />
</fragment>
<fragment
android:id="@+id/authenticationFragment"
android:name="com.example.AuthenticationFragment"
android:label="fragment_authentication"
tools:layout="@layout/fragment_authentication" />
<fragment
android:id="@+id/settingFragment"
android:name="com.example.view.main.fragment.SettingFragment"
android:label="SettingFragment"
tools:layout="@layout/fragment_setting" />
</navigation>
我在各处添加了该属性(导航和片段)。还有 navigation.xml 中使用的布局文件夹中的布局文件。但是没用。
这是activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#000"
android:tint="#555"
tools:context=come.example.view.main.MainActivity">
<ImageView
android:id="@+id/iv_flame"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_centerInParent="true" />
<fragment
android:id="@+id/nav_host_fragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:navGraph="@navigation/navigation"/>
</RelativeLayout>
您没有正确设置 <fragment>
- 每个 <fragment>
都需要一个 android:name
指向它正在加载的片段 class。对于导航,它必须根据 Getting Start documentation:
引用 androidx.navigation.fragment.NavHostFragment
<fragment
android:id="@+id/nav_host_fragment"
android:name="androidx.navigation.fragment.NavHostFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:defaultNavHost="true"
app:navGraph="@navigation/navigation"/>
一旦您真正将导航图绑定到 NavHostFragment
,错误就会消失。
如果最初接受的答案不起作用,请尝试 "Make Project"。与 <fragment/>
一起为我工作
如果在应用已接受的答案后仍然出现错误,请尝试此操作 - 我遇到了同样的错误,但我的 activity 正在运行。在我将依赖项从 android 更改为 androidx
后,错误消失了
nav_version = "2.3.0-alpha03"
implementation "androidx.navigation:navigation-fragment-ktx:$nav_version"
implementation "androidx.navigation:navigation-ui-ktx:$nav_version"
implementation "androidx.navigation:navigation-dynamic-features-fragment:$nav_version"
我也在 xml 布局中使用 class
而不是 android:name
<fragment
android:id="@+id/nav_host_fragment"
class="androidx.navigation.fragment.NavHostFragment"
如果其他解决方案没有完全奏效,这个对我有用,希望也能帮助其他人
特别是如果您使用 Kotlin,请检查您的依赖项是否具有相同的 Kotlin 版本(以及任何具有更新或通知或其他内容的东西),然后 rebuild/sync,需要一点时间来加载,至少对我来说似乎工作正常。
*如果不起作用,请尝试使 catch/restart 失效,谁知道呢
虽晚希望有人受益。我遇到过同样的问题。使用
android:name="androidx.navigation.fragment.NavHostFragment"
app:navGraph="@navigation/mobile_navigation"
。但仍然显示相同的错误。最后我通过查看 build.gradle 文件解决了我的问题。
首先我的 gradle 文件是这样的:
implementation "androidx.navigation:navigation-fragment:2.3.0-beta01"
implementation "androidx.navigation:navigation-ui:2.3.0-beta01"
然后我将这个额外的依赖项添加到解决了问题的那些依赖项中:
implementation "androidx.navigation:navigation-dynamic-features-fragment:2.3.0-beta01"
祝你好运。
只需清理您的项目 Build-> Clean Project
造成这种情况的一个可能原因,至少在我的情况下,是有纵向和横向模式的布局文件,但忘记为它们添加 androidx.navigation.fragment.NavHostFragment
视图。将块添加到 layout-land/your_activity_layout.xml
使图表在 Android Studio 中正确显示。
我正在尝试将 navigation
功能应用于我的项目。
我有这个错误:
This navigation graph is not referenced to any layout files(expected to find it in at least one layout file with a NavHostFragment with app:navGraph="@navigation/@navigation" attribute
<?xml version="1.0" encoding="utf-8"?>
<navigation xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/navigation"
android:label="fragment_init"
app:startDestination="@id/initFragment"
>
<fragment
android:id="@+id/initFragment"
android:label="fragment_init"
tools:layout="@layout/fragment_init">
<action
android:id="@+id/action_initFragment_to_authenticationFragment5"
app:destination="@id/authenticationFragment"
/>
<action
android:id="@+id/action_initFragment_to_settingFragment3"
app:destination="@id/settingFragment" />
</fragment>
<fragment
android:id="@+id/authenticationFragment"
android:name="com.example.AuthenticationFragment"
android:label="fragment_authentication"
tools:layout="@layout/fragment_authentication" />
<fragment
android:id="@+id/settingFragment"
android:name="com.example.view.main.fragment.SettingFragment"
android:label="SettingFragment"
tools:layout="@layout/fragment_setting" />
</navigation>
我在各处添加了该属性(导航和片段)。还有 navigation.xml 中使用的布局文件夹中的布局文件。但是没用。
这是activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#000"
android:tint="#555"
tools:context=come.example.view.main.MainActivity">
<ImageView
android:id="@+id/iv_flame"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_centerInParent="true" />
<fragment
android:id="@+id/nav_host_fragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:navGraph="@navigation/navigation"/>
</RelativeLayout>
您没有正确设置 <fragment>
- 每个 <fragment>
都需要一个 android:name
指向它正在加载的片段 class。对于导航,它必须根据 Getting Start documentation:
androidx.navigation.fragment.NavHostFragment
<fragment
android:id="@+id/nav_host_fragment"
android:name="androidx.navigation.fragment.NavHostFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:defaultNavHost="true"
app:navGraph="@navigation/navigation"/>
一旦您真正将导航图绑定到 NavHostFragment
,错误就会消失。
如果最初接受的答案不起作用,请尝试 "Make Project"。与 <fragment/>
如果在应用已接受的答案后仍然出现错误,请尝试此操作 - 我遇到了同样的错误,但我的 activity 正在运行。在我将依赖项从 android 更改为 androidx
后,错误消失了nav_version = "2.3.0-alpha03"
implementation "androidx.navigation:navigation-fragment-ktx:$nav_version"
implementation "androidx.navigation:navigation-ui-ktx:$nav_version"
implementation "androidx.navigation:navigation-dynamic-features-fragment:$nav_version"
我也在 xml 布局中使用 class
而不是 android:name
<fragment
android:id="@+id/nav_host_fragment"
class="androidx.navigation.fragment.NavHostFragment"
如果其他解决方案没有完全奏效,这个对我有用,希望也能帮助其他人
特别是如果您使用 Kotlin,请检查您的依赖项是否具有相同的 Kotlin 版本(以及任何具有更新或通知或其他内容的东西),然后 rebuild/sync,需要一点时间来加载,至少对我来说似乎工作正常。
*如果不起作用,请尝试使 catch/restart 失效,谁知道呢
虽晚希望有人受益。我遇到过同样的问题。使用
android:name="androidx.navigation.fragment.NavHostFragment"
app:navGraph="@navigation/mobile_navigation"
。但仍然显示相同的错误。最后我通过查看 build.gradle 文件解决了我的问题。
首先我的 gradle 文件是这样的:
implementation "androidx.navigation:navigation-fragment:2.3.0-beta01"
implementation "androidx.navigation:navigation-ui:2.3.0-beta01"
然后我将这个额外的依赖项添加到解决了问题的那些依赖项中:
implementation "androidx.navigation:navigation-dynamic-features-fragment:2.3.0-beta01"
祝你好运。
只需清理您的项目 Build-> Clean Project
造成这种情况的一个可能原因,至少在我的情况下,是有纵向和横向模式的布局文件,但忘记为它们添加 androidx.navigation.fragment.NavHostFragment
视图。将块添加到 layout-land/your_activity_layout.xml
使图表在 Android Studio 中正确显示。