Как передать контекст из фрагмента в Kotlin? - PullRequest
0 голосов
/ 14 октября 2019

Как передать Context из запущенного фрагмента в другой класс? Мне нужно извлечь из него данные о ресурсах, но по какой-то причине, когда я отправляю их через аргументы, они кажутся пустыми.

class BeatBoxFragment : Fragment() {
...
    var mBeatBox: BeatBox = BeatBox(this.context!!)
...
}

Я буду использовать контекст этого фрагмента для доступа к ресурсам изактивность.

class BeatBox(context: Context) {
...
    val mAssets: AssetManager = context.getAssets()
...
}

Программа аварийно завершает работу, если я пытаюсь вызвать BeatBox с аргументами this.context!!. Очевидно, это значение равно нулю (в соответствии с тем, что предлагает моя трассировка стека: android.beatbox.BeatBoxActivity}: kotlin.KotlinNullPointerException")

Любая помощь очень ценится.

1 Ответ

1 голос
/ 14 октября 2019

Используйте requireContext(), которые гарантируют, что фрагмент прикреплен и возвращает допустимый ненулевой контекст, который мы можем использовать без каких-либо проблем.

Также вы можете использовать applicationContext для доступаasset который не зависит от Activity жизненного цикла

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