android - 类型参数不在其范围内:应该是 Kotlin Android 的“NavArgs”的子类型
问题描述
我正在运行以下片段代码,用于使用 navArgs 在“列表片段”和“更新片段”之间传递用户类数据。但我得到错误类型参数不在其范围内:应该是“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()
. 奇怪,但解决了这个问题。
推荐阅读
- ios - 如何重新加载 UIPageViewController 以在 Swift 中重新加载其视图
- android - 无法为 ConnectivityManager 类解析导入
- css - Bootstrap 4,带图标的按钮,垂直对齐的 PC 与手机
- javascript - 滚动时获取 0 到 1 之间的滚动百分比
- angular - 您似乎不依赖“@angular/core”和/或“rxjs”。这是一个错误
- html - 如何将此页面的所有html元素定位到屏幕的中心?
- scala - Web服务调用的Playframework无限超时
- elasticsearch - Elastic NEST 反序列化错误的字段
- ios - How to override values/file in framework in ios
- spring - How to mock multiple responses for same request using spring's MockRestServiceServer?