Несколько ошибок в моих фрагментах после обновления библиотеки поддержки до 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
Kotlin: вызывается функция обновления пользовательского интерфейса от BroadcastReceiver onReceive Комната, проблемы Котлина только с JellyBean Выполнение не выполнено для задачи ': calculator: compileKonanKotlinArithmeticParserIphone' Каков наилучший способ определения константы log TAG в Kotlin? Firebase Android – создайте пользователя с помощью электронной почты и пароль в Kotlin Как называется Котлин! оператор проблемы с макетами и ошибки в приложении android, разработанные с использованием kotlin Как перечислить аннотации полей в Котлине? Сократить «настройку времени компиляции» для Kotlin с Maven Почему у меня есть нежелательный выход Log при слиянии 2 наблюдаемых в другие Observable, которые буферизуют их каждые 10 секунд > Не удалось применить плагин > Для строки ввода: "" Синтетическое расширение Kotlin и несколько включают в себя одну и ту же компоновку Как вызвать функцию верхнего уровня из метода или функции расширения одной и той же сигнатуры? Почему котировский код байта ссылки java.util.function.BiConsumer? Сгладить итератор двумерного массива в Котлине