Я новичок в 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)
context — это null, потому что конструктор вызывается вне жизненного цикла, в объявлении поля, где context еще не создано. Так вот почему он может рухнуть.
Преобразование mediaPlayer в переменную lateinit устранит необходимость обнуляемости. private lateinit var mediaPlayer: MediaPlayer
то в onCreateView он может быть инициализирован как mediaPlayer = MediaPlayer.create(context, R.raw.workout_music).
попробуйте переместить приватный var mediaPlayer: MediaPlayer? = MediaPlayer.create(context, R.raw.workout_music) в onCreate также