覆盖 fun onCreate(savedInstanceState: Bundle?):编译器错误“onCreate 不覆盖任何内容”

问题描述 投票:0回答:1

我正在尝试通过 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 方法。)我的问题是,上面的代码给出了相同的编译器错误,无论“?”包含或注释。显然还有其他问题。

如果有任何有关原因的提示,我将不胜感激。

kotlin
1个回答
0
投票

案例很重要。写

onCreate
(大写 C),而不是
oncreate

© www.soinside.com 2019 - 2024. All rights reserved.