Фрагмент $InstantiationException Kotlin MediaPlayer

Я новичок в Kotlin и пытаюсь создать приложение для упражнений в Android Studio. Теперь я использую архитектуру фрагментов для своего приложения. У меня проблема при попытке воспроизвести определенную песню на фрагменте, когда я нажимаю кнопку, чтобы активировать ее.

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)

попробуйте переместить приватный var mediaPlayer: MediaPlayer? = MediaPlayer.create(context, R.raw.workout_music) в onCreate также

Antonis Radz 20.03.2019 11:37
0
1
129
1

Ответы 1

context — это null, потому что конструктор вызывается вне жизненного цикла, в объявлении поля, где context еще не создано. Так вот почему он может рухнуть.

Преобразование mediaPlayer в переменную lateinit устранит необходимость обнуляемости. private lateinit var mediaPlayer: MediaPlayer то в onCreateView он может быть инициализирован как mediaPlayer = MediaPlayer.create(context, R.raw.workout_music).

Другие вопросы по теме