类型参数不在其范围内:对于 Kotlin Android 应该是 'NavArgs' 的子类型

Type argument is not within its bounds: should be subtype of 'NavArgs' for Kotlin Android

我是 运行 以下片段代码,用于使用 navArgs 在“列表片段”和“更新片段”之间传递用户 class 数据。但是我收到错误类型参数不在其范围内:应该是 'NavArgs'.

的子类型

下面是我接收数据的更新片段代码,之后是XML中的片段导航图。我正在学习这方面的教程,所以我的术语可能有点不精确,抱歉。我还应该说我正在使用房间数据库。感谢您的帮助。

package com.example.testingroomdatabase.realFragments.update

import android.os.Bundle
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.navigation.fragment.navArgs
import com.example.testingroomdatabase.R
import kotlinx.android.synthetic.main.fragment_update_fragment.view.*

class UpdateFragment : Fragment() {
    private val args by navArgs<UpdateFragmentArgs>()
    override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        // Inflate the layout for this fragment
        val view =  inflater.inflate(R.layout.fragment_update_fragment, container, false)
        view.updateFirstName_et.setText(args.currentUser.firstName)
        view.updateLastName_et.setText(args.currentUser.lastName)
        view.updateAge_et.setText(args.currentUser.age.toString())

        return view

    }
}

<?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/my_nav"
    app:startDestination="@id/listFragment">

    <fragment
        android:id="@+id/listFragment"
        android:name="com.example.testingroomdatabase.realFragments.list.listFragment"
        android:label="List"
        tools:layout="@layout/fragment_list" >
        <action
            android:id="@+id/action_listFragment_to_addFragment"
            app:destination="@id/addFragment" />
        <action
            android:id="@+id/action_listFragment_to_updateFragment"
            app:destination="@id/updateFragment" />
    </fragment>
    <fragment
        android:id="@+id/addFragment"
        android:name="com.example.testingroomdatabase.realFragments.add.addFragment"
        android:label="Add"
        tools:layout="@layout/fragment_add" >
        <action
            android:id="@+id/action_addFragment_to_listFragment"
            app:destination="@id/listFragment" />
    </fragment>
    <fragment
        android:id="@+id/updateFragment"
        android:name="com.example.testingroomdatabase.realFragments.update.UpdateFragment"
        android:label="Update"
        tools:layout="@layout/fragment_update_fragment" >
        <action
            android:id="@+id/action_updateFragment_to_listFragment"
            app:destination="@id/listFragment" />
        <argument
            android:name="currentUser"
            app:argType="com.example.testingroomdatabase.model.User" />
    </fragment>
</navigation>

原来private val args by navArgs<UpdateFragmentArgs>()不对。您必须将该行更改为 private val args: UpdateFragmentArgs by navArgs()。 奇怪,但解决了问题。