我正在尝试通过 Android 编程,The Big Nerd Ranch,第 5 版中的示例来学习 Android Studio 2023.3.1 中的 Kotlin。 CrimeIntent 示例包含 CrimeDetailFragment.kt 类,如下所示:
package com.bignerdranch.android.criminalintent
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.core.widget.doOnTextChanged
import androidx.fragment.app.Fragment
import com.bignerdranch.android.criminalintent.databinding.FragmentCrimeDetailBinding
import java.util.UUID
class CrimeDetailFragment : Fragment() {
private lateinit var binding: FragmentCrimeDetailBinding
private lateinit var crime: Crime
override fun oncreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
crime = Crime(
id = UUID.randomUUID(),
title = "",
date = java.util.Date(),
isSolved = false
)
}
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
) : View? {
binding = FragmentCrimeDetailBinding.inflate(inflater, container, false)
return binding.root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
binding.apply {
crimeTitle.doOnTextChanged { text, _, _, _ ->
crime = crime.copy(title = text.toString())
}
crimeDate.apply {
text = crime.date.toString()
isEnabled = false
}
crimeSolved.setOnCheckedChangeListener { _, isChecked ->
crime = crime.copy(isSolved = isChecked)
}
}
}
}
但是,编译此代码会出现错误“onCreate overrides Nothing”。我找不到这个问题的原因。
其他 Stackoverflow 问题表明 Bundle?导致问题的原因是 Bundle 不能为 null。 (即使“androidx.fragment.app.Fragment”中的 Fragment 类文件列出了带有 Bundle? nullable 的 onCreate 方法。)我的问题是,上面的代码给出了相同的编译器错误,无论“?”包含或注释。显然还有其他问题。
如果有任何有关原因的提示,我将不胜感激。
案例很重要。写
onCreate
(大写 C),而不是 oncreate
。