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 cuando con valores múltiples no funciona cuando el valor es una vista de Android
  • ¿Cómo combinar dos sets de enumeraciones en kotlin con la misma interfaz padre?
  • Clases de datos de Json a kotlin
  • Dagger 2 no puede acceder a Retrofit
  • Pasando lambda en lugar de interfaz
  • JPA, Spring Data y Kotlin - Guardar loggings
  • Gradle sinc falló con la extensión de kotlin. para cadena de input: "" en el module de file build.gradle (aplicación)
  • ¿Cómo funcionan las funciones de extensión de Kotlin?
  • Cómo llamar al número de teléfono en Kotlin Android
  • Excepción: blockingConnect no se debe invocar en el subprocess UI a pesar de que subsubscribí en otro subprocess
  • no hay constructor pnetworkingeterminado para la entidad JPA con Kotlin, incluso con el complemento noarg