我还很新手,不知道该语言的一些功能。我遇到以下问题,这是我的代码:
private lateinit var surface: SurfaceView
private var _binding: FragmentItem2Binding? = null
private val binding get() = _binding!!
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
_binding = FragmentItem2Binding.inflate(inflater, container, false)
return binding.root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
surface?.findViewById<SurfaceView>(R.id.surf)
this.surface!!.holder!!.addCallback(object : SurfaceHolder.Callback {
override fun surfaceCreated(holder: SurfaceHolder) {
TODO("Not yet implemented")
}
override fun surfaceChanged(
holder: SurfaceHolder,
format: Int,
width: Int,
height: Int,
) {
TODO("Not yet implemented")
}
override fun surfaceDestroyed(holder: SurfaceHolder) {
TODO("Not yet implemented")
}
})
xml:
\<SurfaceView
android:layout_width="400sp"
android:layout_height="400sp"
android:id="@+id/surf"
\\\>
如果我输入lateinit var,它会给出错误: kotlin.UninitializedPropertyAccessException:lateinit 属性表面尚未初始化
如果我输入: 私有变量表面:SurfaceView? = 空 它给出了一个错误: java.lang.NullPointerException
所以。我需要做什么???
您没有在任何地方初始化该值。尝试:
surface = findViewById<SurfaceView>(R.id.surf)
或者在viewBinding中:
surface - viewBinding.surf //or what ever the id of the surface is