Android Kotlin中Fragment编译报错“onCreate overrides nothing”求助
解决“onCreate overrides nothing”编译错误
你遇到的编译错误核心原因是方法名大小写错误:你定义的生命周期方法写成了oncreate(小写字母c),但Fragment类中对应的生命周期方法正确名称是onCreate(大写字母C)。Kotlin是严格区分大小写的语言,所以这个方法并没有正确覆盖父类的方法,从而触发“onCreate overrides nothing”错误。
修改后的正确代码如下:
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 // 修正方法名:oncreate -> onCreate 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) } } } }
内容的提问来源于stack exchange,提问作者Ted
相关产品推荐
相关产品推荐

