我对Kotlin还是很陌生,我正在尝试在Android Studio中创建一些锻炼应用程序。现在,我正在为我的应用程序使用Fragment Architecture。按下按钮以激活片段上的特定歌曲时出现问题。
private var mediaPlayer: MediaPlayer? = MediaPlayer.create(context, R.raw.workout_music)
,然后在我的onCreateView函数中:
mediaPlayer?.start()
并收到此错误:
android.support.v4.app.Fragment$InstantiationException: Unable to instantiate fragment com.example.bitamirshafiee.fitnessapp.ExerciseFragment: calling Fragment constructor caused an exception
at android.support.v4.app.Fragment.instantiate(Fragment.java:465)
答案 0 :(得分:1)
context
是null
,因为构造函数是在生命周期之外在尚未创建context
的字段声明中调用的。这就是为什么它会崩溃的原因。
使mediaPlayer
成为lateinit
变量将消除对可为空性的需求。 private lateinit var mediaPlayer: MediaPlayer
然后可以在onCreateView
中将其初始化为mediaPlayer = MediaPlayer.create(context, R.raw.workout_music)
。