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 conseguir ARTE ALBUM de una canción de su path en kotlin?
  • Extremadamente lento en autocompletado y análisis de código para proyectos Kotlin en Intellij IDEA
  • Métodos estáticos como en la aplicación de Android con kotlin
  • Dagger2 inyecta un presentador en un error de actividad de Kotlin
  • Encuadernación con vista de Android Kotlin: findViewById vs Butterknife vs Kotlin Android Extension
  • La reference de identificación de Kotlin Textview no funciona con caracteres no ingleses
  • ¿Qué versión (s) de Kotlin debería usar para Android Studio 3.0 Canary 1?
  • ¿Cómo crear un button en Kotlin que abre una nueva actividad (Android Studio)?
  • Base de datos de android de Kotlin: no se puede convertir java.lang.String en android.database.Cursor
  • Servicio VPN local de Android: no se puede get respuesta
  • Problema de Kotlin Gradle