Избегайте активности!! при расширении DialogFragment

Я использую DialogFragment, и в onCreateDialog мне нужно использовать ссылку Activity. Проблема в том, что с последней библиотекой поддержки (28.0.0) активность становится обнуляемой, поэтому при использовании AlertDialog.Builder в onCreateDialog я вынужден использовать !!

override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
    [...]
    val dialog = AlertDialog.Builder(activity!!).setTitle(R.string.title)[...].create()
    [...]
    return dialog
}

Я не могу добавить нулевую проверку, потому что мне все равно нужно вернуть диалог. Есть ли какое-либо чистое решение, которого следует избегать! оператор?


person A._    schedule 22.04.2020    source источник


Ответы (1)


Используйте requireActivity(), но имейте в виду, что если ваш фрагмент еще не привязан к действию, он выдаст IllegalStateException

person 92AlanC    schedule 22.04.2020
comment
Обратите внимание, что фреймворк никогда не будет вызывать onCreateDialog() для отсоединенного фрагмента. Пока ты не настолько сумасшедший, чтобы называть это сам, ты должен быть в порядке. - person Nitrodon; 22.04.2020
comment
В яблочко. Есть некоторые крайние случаи (довольно редкие, если честно), когда это может случиться, но не о чем параноить. - person 92AlanC; 22.04.2020