Несколько ошибок в моих фрагментах после обновления библиотеки поддержки до 27.0.0

После обновления библиотеки поддержки от v-26.1.0 до v-27.0.0 Несколько ошибок в моих фрагментах.

вот список некоторых этих ошибок:

Ошибка: Smart cast to 'Bundle' невозможно, потому что «arguments» – это свойство mutable, которое к этому моменту могло быть изменено.

Ошибка: «onCreateView» ничего не отменяет

Ошибка: «onViewCreated» ничего не отменяет

Ошибка: Тип несоответствия: выводный тип – вид? но вид ожидался

Ошибка: тип несоответствия: выводный тип – это контекст? но ожидался контекст

Ошибка: тип несоответствия: выводимый тип – FragmentActivity? но ожидался контекст

Ошибка: тип несоответствия: выводимый тип – FragmentActivity? но ожидался контекст

из шаблона студии android для пустого фрагмента.

override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) if (arguments != null) { mParam1 = arguments.getString(ARG_PARAM1) mParam2 = arguments.getString(ARG_PARAM2) } } override fun onCreateView(inflater: LayoutInflater?, container: ViewGroup?, savedInstanceState: Bundle?): View? { return inflater!!.inflate(R.layout.fragment_blank, container, false) } override fun onViewCreated(view: View?, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) } 

Коренной причиной всех этих ошибок является то, что в библиотеке поддержки v-27.0.0 @Nullable и @NonNull аннотации.
и поскольку язык kotlin знает об ошибке и имеет другой тип для Nullable и NonNull , в отличие от Java.
без этих аннотаций, у компилятора нет возможности дифференцироваться между ними, и Android-студия старалась изо всех сил вывести правильный тип.

TL; DR: изменить типы, чтобы правильно отражать статус nullability.


Ошибка: Smart cast to 'Bundle' невозможно, потому что «arguments» – это свойство mutable, которое к этому моменту могло быть изменено.

change arguments.getString(ARG_NAME) ==> arguments?.getString(ARG_NAME) ?: ""


Ошибка: «onCreateView» ничего не отменяет

Чейн:

 override fun onCreateView(inflater: LayoutInflater?, container: ViewGroup?, savedInstanceState: Bundle?): View? 

==>

 override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? 

Ошибка: «onViewCreated» ничего не отменяет

изменение:

 override fun onViewCreated(view: View?, savedInstanceState: Bundle?) 

==>

 override fun onViewCreated(view: View, savedInstanceState: Bundle?) 

Ошибка: тип несоответствия: выводный тип – это контекст? но ожидался контекст

если контекст передается как аргумент метода, просто используйте быстрое исправление для замены getContext() с помощью getContext()?.let{}
то же самое относится к контексту короткой версии kotlin.

else, если используется для вызова какого-либо метода, замените getContext().someMethod() с getContext()?.someMethod()

то же самое относится к контексту короткой версии context?.someMethod() .


Ошибка: тип несоответствия: выводимый тип – FragmentActivity? но ожидался контекст

используйте исправление предыдущей ошибки.

Intereting Posts
Spring Security: безопасная конечная точка на основе полномочий клиента Могу ли я иметь другой тип возврата в котлин? Неразрешенные ссылки на стандартные элементы библиотеки Kotlin (JVM) Данные запроса из таблицы Google в Android Kotlin: как передать последовательность (сопрограммы) как Iterable <T> Котлин требует библиотеку с гребнем Kotlin – «Не волнует» в обесцвечивании класса данных Единичный тест на функцию расширения Kotlin на Android SDK Classes Как вводить нестатические, по требованию NativeModules в React Native Android? Функция, возвращающая специальный объект в Котлине Неразрешенный справочник внутри анонимного слушателя Kotlin DexFile не содержит сгенерированных классов после добавления конфигурации Kotlin на Android 4.4 Завершение обработки Android Kotlin Конструктор ненулевой перегрузки Как написать надлежащий тест для реактивного репозитория интерфейса, который возвращает Observable только в том случае, когда есть какое-то событие, как издеваться над запуском этого события