Несколько ошибок в моих фрагментах после обновления библиотеки поддержки до 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
Вызов метода Java из Kotlin со списком параметров Почему этот способ случайного создания графика несправедлив? Как правильно делать PATCH в строго типизированных языках на основе Spring – пример Android ResolveInfo Parcelable не полностью не отпадает Почему небезопасный вызов .run () отлично работает при нулевом значении в Котлин? Как вернуть исключение зависимостей модуля в Intellij (после ложной проверки кода) Выражения объекта Kotlin: пример компаратора Внутренний класс создает неудачу в Котлине Аннотации в Котлине не работают Kotlin Kmongo вставить и вернуть вставленный элемент Android / Kotlin Crash при запуске 4.1.2 – ExceptionInInitializerError Загрузка классов, созданных Kotlin во время выполнения с Java Как добавить класс Kotlin в проект Android Studio? Переопределение активателя имущества Котлина приводит к двум JPA @Id Как использовать настраиваемый сеттер в корпусе конструктора класса Kotlin