Фрагмент $ InstantiationException Kotlin MediaPlayer - PullRequest
0 голосов
/ 20 марта 2019

Я довольно новичок в 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)

1 Ответ

1 голос
/ 20 марта 2019

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...