Fragment $ InstantiationException Kotlin MediaPlayer

时间:2019-03-20 10:32:58

标签: android android-fragments kotlin

我对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)

1 个答案:

答案 0 :(得分:1)

contextnull,因为构造函数是在生命周期之外在尚未创建context的字段声明中调用的。这就是为什么它会崩溃的原因。

使mediaPlayer成为lateinit变量将消除对可为空性的需求。 private lateinit var mediaPlayer: MediaPlayer 然后可以在onCreateView中将其初始化为mediaPlayer = MediaPlayer.create(context, R.raw.workout_music)