Varios errores en mis fragments después de actualizar la biblioteca de soporte a 27.0.0

Después de actualizar la biblioteca de soporte de v-26.1.0 a v-27.0.0 Varios errores en mis fragments.

aquí hay una list de algunos de estos errores:

Error: Smart Cast para 'Bundle' es imposible, porque 'arguments' es una propiedad mutable que podría haberse cambiado en este momento.

Error: 'onCreateView' no anula nada

Error: 'onViewCreated' no anula nada

Error: Tipo de discrepancia: ¿tipo inferido es Ver? pero se esperaba View

Error: No coincidencia de types: ¿tipo inferido es Context? pero se esperaba Context

Error: Tipo de discrepancia: ¿tipo inferido es FragmentActivity? pero se esperaba Context

Error: Tipo de discrepancia: ¿tipo inferido es FragmentActivity? pero se esperaba Context

de la plantilla de android studio para el fragment vacío.

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) } 

La causa raíz de todos estos errores es que en la biblioteca de soporte v-27.0.0 se han agregado las annotations @Nullable y @NonNull .
y dado que el lenguaje kotlin es consciente de la nulabilidad y tiene un tipo diferente para Nullable y NonNull , a diferencia de Java.
sin estas annotations, el comstackdor no tiene forma de diferenciarlas, y el estudio de Android hacía todo lo posible para inferir el tipo correcto.

TL; DR: cambie los types para reflejar correctamente el estado de anulabilidad.


Error: Smart Cast para 'Bundle' es imposible, porque 'arguments' es una propiedad mutable que podría haberse cambiado en este momento.

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


Error: 'onCreateView' no anula nada

chane:

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

==>

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

Error: 'onViewCreated' no anula nada

cambio:

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

==>

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

Error: No coincidencia de types: ¿tipo inferido es Context? pero se esperaba Context

si el context se pasa como argumento al método, simplemente use la solución rápida para replace getContext() con getContext()?.let{}
lo mismo se aplica al context versión corta de kotlin.

de lo contrario, si se usa para llamar a algún método, reemplace getContext().someMethod() con getContext()?.someMethod()

lo mismo se aplica al context?.someMethod() versión corta de context?.someMethod() .


Error: Tipo de discrepancia: ¿tipo inferido es FragmentActivity? pero se esperaba Context

usa la solución del error anterior.

  • Kotlin & Hibernate IllegalArgumentException: no se puede establecer el campo String Job.name en Job
  • RxJava (Kotlin), Observable.amb y PublishSubject no están disparando
  • Android - Kotlin: el object debe declararse abstracto o implementar miembro abstracto
  • Iterar valores enum usando values ​​() y valueOf en kotlin
  • Mapa de Kotlin y networkingucir el set de cadenas para mapear <String, Any!>
  • Error " no se puede convertir a JSON" al intentar crear un object JSON de String
  • Daga 2 inyectando el model de vista de actividad en fragment
  • La versión de lanzamiento de Gradle falló con Gradle 3.3
  • Cómo alinear manualmente la diversión de Kotlin con <reified T: Any>
  • Cómo convertir una list a un map en Kotlin?
  • No se puede inicializar el button en el dialog en Kotlin