尝试调用接口方法';int java.util.List.size()';在传递Parcelable in Intent Kotlin时的空对象引用上

尝试调用接口方法';int java.util.List.size()';在传递Parcelable in Intent Kotlin时的空对象引用上,kotlin,android-intent,android-recyclerview,nullpointerexception,parcelable,Kotlin,Android Intent,Android Recyclerview,Nullpointerexception,Parcelable,因此,我有一个示例应用程序,目前正在使用改造获取数据,并使用其自定义适配器将其显示在recyclerview中。当我在我的回收视图上单击字符名称时,我想将数据传递到“更多详细信息”页面。我找到了一些教程,并决定像这样使用Parcelize注释: @Parcelize data class Character ( val charID: Long, val name: String, val birthday: String, val occupation: List<String>,

因此,我有一个示例应用程序,目前正在使用改造获取数据,并使用其自定义适配器将其显示在recyclerview中。当我在我的回收视图上单击字符名称时,我想将数据传递到“更多详细信息”页面。我找到了一些教程,并决定像这样使用Parcelize注释:

@Parcelize data class Character (
val charID: Long,
val name: String,
val birthday: String,
val occupation: List<String>,
val img: String,
val status: String,
val nickname: String,
val appearance: List<Long>,
val portrayed: String,
val category: String,
val betterCallSaulAppearance: List<Long> ) : Parcelable
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
    val character = characters[position]
    holder.characterNameText.text = character.name

    holder.characterNameText.setOnClickListener {
        holder.passData(character)
    }
}

override fun getItemCount() = characters.size


class ViewHolder(itemView : View) : RecyclerView.ViewHolder(itemView) {
    val characterNameText = itemView.findViewById<TextView>(R.id.character_name)

    fun passData(character : Character) {
        val intent = Intent(itemView.context, CharacterDetails::class.java)
        intent.putExtra(CHARACTER, character)
        itemView.context.startActivity(intent)
    }



}
companion object {
    const val CHARACTER = "character"
}
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_character_details)

    val bundle = intent.extras
    val character = bundle!!.getParcelable<Character>(CHARACTER)


    val characterName = findViewById<TextView>(R.id.character_details_name)
@Parcelize数据类字符(
瓦尔·查里德:很长,
val name:String,
瓦尔生日:字符串,
val职业:列表,
val img:String,
val状态:字符串,
val昵称:String,
val外观:列表,
瓦尔:弦,
val类别:字符串,
val BETTERCALL SAULAPEARANCE:列表):可包裹
我的适配器如下所示:

@Parcelize data class Character (
val charID: Long,
val name: String,
val birthday: String,
val occupation: List<String>,
val img: String,
val status: String,
val nickname: String,
val appearance: List<Long>,
val portrayed: String,
val category: String,
val betterCallSaulAppearance: List<Long> ) : Parcelable
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
    val character = characters[position]
    holder.characterNameText.text = character.name

    holder.characterNameText.setOnClickListener {
        holder.passData(character)
    }
}

override fun getItemCount() = characters.size


class ViewHolder(itemView : View) : RecyclerView.ViewHolder(itemView) {
    val characterNameText = itemView.findViewById<TextView>(R.id.character_name)

    fun passData(character : Character) {
        val intent = Intent(itemView.context, CharacterDetails::class.java)
        intent.putExtra(CHARACTER, character)
        itemView.context.startActivity(intent)
    }



}
companion object {
    const val CHARACTER = "character"
}
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_character_details)

    val bundle = intent.extras
    val character = bundle!!.getParcelable<Character>(CHARACTER)


    val characterName = findViewById<TextView>(R.id.character_details_name)
覆盖BindViewHolder(holder:ViewHolder,position:Int){
val字符=字符[位置]
holder.characterNameText.text=character.name
holder.characterNameText.setOnClickListener{
持有者.密码数据(字符)
}
}
重写fun getItemCount()=characters.size
类ViewHolder(itemView:View):RecyclerView.ViewHolder(itemView){
val characterNameText=itemView.findviewbyd(R.id.character\u name)
fun passData(字符:字符){
val intent=intent(itemView.context,CharacterDetails::class.java)
intent.putExtra(字符,字符)
itemView.context.startActivity(意图)
}
}
CharacterDetails活动中,如下所示:

@Parcelize data class Character (
val charID: Long,
val name: String,
val birthday: String,
val occupation: List<String>,
val img: String,
val status: String,
val nickname: String,
val appearance: List<Long>,
val portrayed: String,
val category: String,
val betterCallSaulAppearance: List<Long> ) : Parcelable
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
    val character = characters[position]
    holder.characterNameText.text = character.name

    holder.characterNameText.setOnClickListener {
        holder.passData(character)
    }
}

override fun getItemCount() = characters.size


class ViewHolder(itemView : View) : RecyclerView.ViewHolder(itemView) {
    val characterNameText = itemView.findViewById<TextView>(R.id.character_name)

    fun passData(character : Character) {
        val intent = Intent(itemView.context, CharacterDetails::class.java)
        intent.putExtra(CHARACTER, character)
        itemView.context.startActivity(intent)
    }



}
companion object {
    const val CHARACTER = "character"
}
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_character_details)

    val bundle = intent.extras
    val character = bundle!!.getParcelable<Character>(CHARACTER)


    val characterName = findViewById<TextView>(R.id.character_details_name)
伴生对象{
const val CHARACTER=“CHARACTER”
}
重写创建时的乐趣(savedInstanceState:Bundle?){
super.onCreate(savedInstanceState)
setContentView(R.layout.activity\u character\u详细信息)
val bundle=intent.extras
val character=bundle!!.getParcelable(字符)
val characterName=findviewbyd(R.id.character\u details\u name)
但我得到了一份工作

java.lang.NullPointerException:尝试对空对象引用调用接口方法“int java.util.List.size() 位于com.example.myapplication.models.Character.writeToParcel(未知来源:85)


我还是新手,所以我真的需要你的帮助。谢谢!

显然,数据类的列表引用导致的错误为空。你可以这样修改代码

@Parcelize数据类字符(
瓦尔·查里德:很长,
val name:String,
瓦尔生日:字符串,
val职业:列表?,
val img:String,
val状态:字符串,
val昵称:String,
val外观:列表?,
瓦尔:弦,
val类别:字符串,
val BETTERCALL SAULAPEARANCE:列表?:可包裹

哇,谢谢你的救命恩人!