Android support library 27, Fragment update?

Desde que actualicé mi proyecto a SDK versión 27 y los plugins de gradle para la biblioteca de soporte a la versión 27.0.0 tuve que cambiar mi código.

Con 26.1.0 puedo usar getContext() (con el context Kotlin) en mi Fragment ( android.support.v4.app ) y no tengo problemas de nulabilidad, pero como utilizo Kotlin tengo un problema con la versión 27.0.0 , todas mis llamadas de context ya no funcionaban, necesitaba un operador de security, ¡como el context!! , pero dado que personalmente considero que es una prisa hacer eso cada vez que me acabo de hacer la function de solución alternativa

 override fun getContext() = super.getContext()!! 

Otra cosa que cambia (de repente y es por eso que estoy preguntando) son los methods onCreateView() y onViewCreated() . En onCreateView el inflador ya no es nulo, así que tuve que cambiar la firma de mi function para anular correctamente desde onCreateView(inflater: LayoutInflater?...) a onCreateView(inflater: LayoutInflater...) y lo mismo para el parámetro createdView en onViewCreated .

Así que ahora me preguntaba por qué, especialmente el cambio de getContext() de Kotlin (muy feo getContext() y se dirigió a https://developer.android.com/sdk/support_api_diff/27.0.0/changes.html .

Pero espera, ¿aparentemente no lo cambiaron? Así que ahora mi pregunta es si estoy haciendo algo mal o si realmente lo cambiaron y, de ser así, podría preguntarles por qué.

Por cierto, lo mismo se aplica a getActivity() , creo que se agregó mHost == null check y el método getActivity es incluso definitivo, por lo que no puedo usar mi solución allí, lo que lo hace muy feo. En realidad, en los files fuente los methods parecen iguales, pero 26.1.0 tiene Kotlin return type Context! y 27.0.0 Context? tipo de devolución Context? .

Estos fueron cambios deliberados. Antes de esta versión de la biblioteca de soporte, estas classs no tenían annotations de anulabilidad, por lo tanto, de Kotlin, todos estos types eran solo types de plataforma . En 27, agregaron las annotations necesarias, por lo que ahora estos types definitivamente se marcan como nulos o no aceptan null en Kotlin; no es necesario adivinar si pueden ser null .

En cuanto a los methods específicos que has mencionado:

  • Los methods getActivity y getContext devuelven types anulables porque cuando el Fragment no está adjunto a una Activity , estos methods ya devolvieron null . No hay cambios en el comportamiento, solo está marcado explícitamente ahora, por lo que puede manejarlo con security.
  • El parámetro onCreateView método onCreateView solía ser un tipo de plataforma, por lo que inflater de onCreateView como nulo o no. Dado que nunca se llamará con null , se ha anotado explícitamente como @NonNull , por lo que su tipo en Kotlin ahora es estrictamente LayoutInflater lugar de LayoutInflater "más flexible" LayoutInflater! tipo.
  • RxJava Live Reactive Queue (con el interruptor de apagado)
  • NoSuchMethodError utilizando Kotlin con el nuevo data binding de Android
  • ¿Cómo habilitar la authentication de portador en la aplicación Spring Boot?
  • Establecedor de propiedad falso
  • Cómo get references de identificadores personalizados en values ​​/ ids.xml
  • Crea una list de otro
  • Smart Cast no funciona como se esperaba
  • ¿Cómo establecer el valor de propiedad delegada por reflexión en kotlin?
  • Cómo pasar la class Java a la class de datos de Kotlin
  • La request de arranque de spring se cuelga allí cuando devuelve el código de estado 1xx
  • Cómo convertir la salida de la function a la Unidad con Kotlin