未设置Android导航java.language.IlLegalStateException片段类 [英] Android Navigation java.language.IllegalStateException fragment class was not set

查看:105
本文介绍了未设置Android导航java.language.IlLegalStateException片段类的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

Navigation Drawer

在此,当我单击保存结果时,它会显示所有保存的结果和日期。 The image showing saved results in SavedResultsFragment
Navigation Layout

当我单击任何项目时,它应该在ShowSavedResltsFragment中显示该被点击项目的所有详细信息,但安装应用程序崩溃并引发IllegalStateException,且未设置片段类。

The image showing navigation layout and code
The image showing code logic where trying to switch to ShowResultsFragment from SavedResultFragment

我使用的是安全参数,当我尝试在SavedResultFragmentShowSavedResultsFragment之间导航时,几乎只有一个问题。我试图搜索官方文档和堆栈溢出,但没有找到任何我面临的东西。官方文档提示navHostfragment没有正确实现,这可能会触发上述异常,但我使用的是他们的官方文档,但我在这里所做的唯一一件事就是通过导航抽屉导航到Fragment,然后从该片段尝试导航到另一个片段,这就是它中断的地方。

Image showing exception 编辑:NavHostFragment代码

<?xml version="1.0" encoding="utf-8"?>

<layout 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">

    <data>

    </data>

    <merge>
        <androidx.drawerlayout.widget.DrawerLayout
            android:id="@+id/drawerLayout"
            android:layout_width="match_parent"
            android:layout_height="match_parent">

            <androidx.constraintlayout.widget.ConstraintLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                tools:context=".MainActivity">

                <androidx.fragment.app.FragmentContainerView
                    android:id="@+id/myNavHostFragment"
                    android:name="androidx.navigation.fragment.NavHostFragment"
                    android:layout_width="0dp"
                    android:layout_height="0dp"
                    app:defaultNavHost="true"
                    app:layout_constraintBottom_toBottomOf="parent"
                    app:layout_constraintLeft_toLeftOf="parent"
                    app:layout_constraintRight_toRightOf="parent"
                    app:layout_constraintTop_toTopOf="parent"
                    app:navGraph="@navigation/navigation" />

            </androidx.constraintlayout.widget.ConstraintLayout>

            <com.google.android.material.navigation.NavigationView
                android:id="@+id/navVew"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:layout_gravity="start"
                app:headerLayout="@layout/nav_header"
                app:menu="@menu/nav_drawer_menu" />
        </androidx.drawerlayout.widget.DrawerLayout>
    </merge>
</layout>

推荐答案

导航图表中ShowSavedResultsFragment的声明没有附加name属性。

如果您查看SavedResultFragment声明,您会注意到它有一个name属性。

ShowSavedResultsFragment声明添加name属性。name属性的值应该是ShowSavedResultsFragment类的包名。(点)类的名称。类似于com.xxx.yyy.savedresult.ShowSavedResultsFragment

这篇关于未设置Android导航java.language.IlLegalStateException片段类的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆