La interoperabilidad Varargs Kotlin Java no funciona correctamente

Para makeSceneTransitionAnimation hay dos funciones estáticas

public static ActivityOptionsCompat makeSceneTransitionAnimation(Activity activity, View shanetworkingElement, String shanetworkingElementName) 

y

  public static ActivityOptionsCompat makeSceneTransitionAnimation(Activity activity, Pair<View, String>... shanetworkingElements) 

La primera llamada a function funciona correctamente en Kotlin pero cuando se llama al segundo, ambas llamadas devuelven errores

  val imageTransition = Pair<View, String>(imageView, imageView.getTransitionName()); val textTransition = Pair<View, String>(textView, textView.getTransitionName()); val transitionList = Array(2, { imageTransition }); transitionList[1] = textTransition; val options = ActivityOptionsCompat.makeSceneTransitionAnimation(this, *transitionList); 

y

  val imageTransition = Pair<View, String>(imageView, imageView.getTransitionName()); val textTransition = Pair<View, String>(textView, textView.getTransitionName()); val options = ActivityOptionsCompat.makeSceneTransitionAnimation(this, imageTransition, textTransition); 

¿Hay una forma adecuada de hacer que esto funcione o es un problema con la interoperabilidad?

Editar cambio agregado para asegurarse de que usa las mismas classs

 val imageView : View = view.findViewById(android.R.id.icon); val textView : View = view.findViewById(android.R.id.text1); imageView.setTransitionName("imageTransition"); textView.setTransitionName("textTransition") val imageTransition : android.support.v4.util.Pair<android.view.View, java.lang.String> = android.support.v4.util.Pair.create(imageView, imageView.getTransitionName() as java.lang.String); val textTransition : android.support.v4.util.Pair<android.view.View, java.lang.String> = android.support.v4.util.Pair.create(textView, textView.getTransitionName() as java.lang.String); val transitionList = Array(2, { imageTransition }); transitionList[1] = textTransition; val options = ActivityOptionsCompat.makeSceneTransitionAnimation(this, *transitionList); 

Error actual del comstackdor:

 Error:(72, 84) The spread operator (*foo) may only be applied in a vararg position Error:(72, 99) No value passed for parameter shanetworkingElementName 

Y otro

 val imageView : View = view.findViewById(android.R.id.icon); val textView : View = view.findViewById(android.R.id.text1); imageView.setTransitionName("imageTransition"); textView.setTransitionName("textTransition") val imageTransition : android.support.v4.util.Pair<android.view.View, java.lang.String> = android.support.v4.util.Pair.create(imageView, imageView.getTransitionName() as java.lang.String); val textTransition : android.support.v4.util.Pair<android.view.View, java.lang.String> = android.support.v4.util.Pair.create(textView, textView.getTransitionName() as java.lang.String); val options = ActivityOptionsCompat.makeSceneTransitionAnimation(this, imageTransition, textTransition); 

Error actual del comstackdor:

 Error:(72, 84) Type mismatch: infernetworking type is android.support.v4.util.Pair<android.view.View, java.lang.String> but android.view.View! was expected Error:(72, 101) Type mismatch: infernetworking type is android.support.v4.util.Pair<android.view.View, java.lang.String> but kotlin.String! was expected 

La respuesta es el símbolo * antes de la variable de matriz:

 import android.support.v4.util.Pair as AndroidPair // ... val pair1 = AndroidPair<View, String>(fab, getString(R.string.transition_fab)) val pair2 = AndroidPair<View, String>(findViewById(R.id.app_bar), getString(R.string.transition_appbar)) ActivityOptionsCompat.makeSceneTransitionAnimation(this@MyActivity, *arrayOf(pair1, pair2)).toBundle(); 

Puede ser el caso de que estés usando accidentalmente kotlin.Pair lugar de android.util.Pair . Agregue la siguiente directiva de import al comienzo de su file:

 import android.util.Pair 

Esto funcionó para mí:

 import android.support.v4.util.Pair // ... val options = ActivityOptionsCompat.makeSceneTransitionAnimation(activity, Pair<View, String>(image, image.transitionName), Pair<View, String>(title, title.transitionName)) startActivity(intent, options.toBundle()) 
  • Cómo usar AndroidAnnotación @ShanetworkingPref con Kotlin
  • Extensiones de Kotlin para Android y fragments retenidos
  • Deshabilitar la generación META-INF / * en el proyecto gradle android library kotlin
  • Kotlinx no puede resolver el símbolo "sintético"
  • Cómo usar null con kotlin @Parcelize
  • La function Kotlin requiere nada, pero se define como un tipo diferente
  • Cómo modificar la variable de instancia de AsyncTask por separado
  • Comprobación de conectividad no funciona en Android Oreo Kotlin
  • El conflicto de las properties sintéticas de Kotlin
  • ¿Cómo crear un button en Kotlin que abre una nueva actividad (Android Studio)?
  • cant en variable de llamada en android studio