为什么仅在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!)
}
}
答案 0 :(得分:3)
问题是...您重新声明了beatBox
:
private lateinit var beatBox: BeatBox
fun test() {
var beatBox = BeatBox() // Create new beatbox for `test() scope`.
// beatBox for class scope is still uninitialized.
}
因此,只需删除var
中的onCreate
关键字;)
答案 1 :(得分:0)