当变量只在onCreate中声明时,为什么我的片段没有进入onCreateView?
它只告诉我"lateinit属性beatBox尚未初始化“,但它已经初始化了!
beatBox在类级别被定义为lateinit,并在onCreate中定义,但是程序没有进入onCreateView方法。我可以在其中添加Log.d并检查创建的对象类型!除非我重新定义var beatBox,引用一个新对象,否则它会崩溃。
为什么我的片段不会进入onCreateView?
class BeatBoxFragment : Fragment() {
private lateinit var beatBox: BeatBox
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
var beatBox = BeatBox(requireContext())
Log.d("Crashing", beatBox.toString() + " has been created, yer program does not go into onCreateView")
}
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
//var beatBox = BeatBox(requireContext())
Log.d("Crashing", "The program does not enter onCreateView unless I uncomment the beatBox definition!)
}
}发布于 2019-10-14 16:25:37
问题是。你重新声明了beatBox
private lateinit var beatBox: BeatBox
fun test() {
var beatBox = BeatBox() // Create new beatbox for `test() scope`.
// beatBox for class scope is still uninitialized.
}所以,在onCreate中去掉var关键字就行了;)
发布于 2019-10-14 16:28:05
您正在尝试使用声明beatbox对象。因此删除在oncreate方法中声明var。
var beatBox = BeatBox(requireContext()) 将上述代码替换为
beatBox = BeatBox(requireContext())

https://stackoverflow.com/questions/58372375
复制相似问题