Это вопрос знаний, которые доступны в получении Fragment
.
. Fragment
не знает, как его arguments
были созданы (или изменены), поэтому он должен предполагать, что ключ "type"
, который вы ищете, может отсутствовать в аргументах Bundle
. Вот почему он возвращает результат nullable
(String?
) (значение null
будет означать отсутствует в аргументах).
Ваш фрагмент может быть создан во многих местах в вашем приложении и его аргументы могли быть изменены во многих местах. Мы не можем отследить это.
Существуют различные решения этой проблемы, в зависимости от вашего подхода к другим частям кода и от того, насколько «вы уверены» в создании своего Fragment
.
Обычно я выбираю решение, в котором я предполагаю, что установка type
равна обязательна . Поэтому если type
отсутствует - я быстро проваливаюсь. Это означало бы, что Fragment
было использовано не по назначению.
val type: String = arguments!!.getString("type")!!
Приведенный выше код вызовет sh, если либо:
a) arguments
не было установлено, либо
b) String
с type
не было введено в arguments
Bundle
.