Robolectric使用导航架构组件,资源$ NotFoundException:nav_graph

问题描述 投票:1回答:1

我在android中运行robolectric测试时遇到麻烦

    <fragment
        android:id="@+id/nav_host_fragment"
        android:name="androidx.navigation.fragment.NavHostFragment"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:layout_marginTop="8dp"
        app:defaultNavHost="true"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:navGraph="@navigation/nav_graph" />

我正在使用导航架构组件我正在获得视图通胀异常

下面是我的错误日志

 android.view.InflateException: XML file       C:\Users\StudioProjects\app\build\intermediates\merged-not-compiled-resources\debug\layout\activity_main.xml line #-1 (sorry, not yet implemented): XML file C:\Users\StudioProjects\app\build\intermediates\merged-not-compiled-resources\debug\layout\activity_main.xml line #-1 (sorry, not yet implemented): Error inflating class fragment Caused by: android.view.InflateException: XML file C:\Users\jitendrakumar\StudioProjects\app\build\intermediates\merged-not-compiled-resources\debug\layout\activity_main.xml line #-1 (sorry, not yet implemented): Error inflating class fragment
        Caused by: android.content.res.Resources$NotFoundException: packagename:navigation/nav_graph
            at org.robolectric.shadows.ShadowLegacyAssetManager.loadXmlResourceParser(ShadowLegacyAssetManager.java:591)
            at org.robolectric.shadows.ShadowResources.loadXmlResourceParser(ShadowResources.java:205)
            at android.content.res.Resources.loadXmlResourceParser(Resources.java)
            at android.content.res.Resources.getXml(Resources.java:1206)
            at androidx.navigation.NavInflater.inflate(NavInflater.java:67)
            at androidx.navigation.NavController.setGraph(NavController.java:424)
            at androidx.navigation.NavController.setGraph(NavController.java:406)
            at androidx.navigation.fragment.NavHostFragment.onCreate(NavHostFragment.java:226)
            at android.support.v4.app.Fragment.performCreate(Fragment.java:2414)

我已经启用了

android.useAndroidX=true
android.enableJetifier=true
android android-testing robolectric androidx android-architecture-navigation
1个回答
1
投票

在navigation.xml文件(或您的自定义res / navigation / * .xml)中观察您的根元素ID。 ID必须为“@ + id / nav_graph”。例:

<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/nav_graph"
        app:startDestination="@id/homeDestinationFragment">
© www.soinside.com 2019 - 2024. All rights reserved.