Hacer reference a las vistas con la misma identificación en diferentes layouts con extensiones de android kotlin

En mi proyecto de Android tengo dos layouts: num_info y num_info_pack. Ambos tienen vistas con id "círculo". Así que pensé que hacer reference a esas vistas mediante layout_name.circle resolvería el problema:

val inetView = activity.layoutInflater.inflate(R.layout.num_info_pack, parent, false) inetView.circle.setBackgroundResource(background) 

Pero el círculo está subrayado con rojo y dice:

Sobrecarga de ambigüedad de resolución. Todas estas funciones coinciden.

public val View.circle: ¡Ver! definido en kotlinx.android.synthetic.main.num_info_pack.view

public val View.circle: RelativeLayout! definido en kotlinx.android.synthetic.main.num_info_inet_plus_pack.view

¿Por qué está confundido acerca de qué círculo estoy hablando si específicamente estoy diciendo inetView.circle?

La solución aquí está en las importaciones. Debe importar dos layouts como

 import kotlinx.android.synthetic.main.num_info_pack 

y

 import kotlinx.android.synthetic.main.num_info_inet_plus_pack 

Elimine uno de ellos y conserve uno con el file de layout apropiado que desea importar. Debería funcionar bien.

No tengo el estudio de Android en la mano ahora, pero creo que esto resolverá tu problema:

 package XXX import kotlinx.android.synthetic.main.num_info_inet_plus_pack.view.circle as inetViewCircle import kotlinx.android.synthetic.main.num_info_pack.view as circle //... val inetView = activity.layoutInflater.inflate(R.layout.num_info_pack, parent, false) inetViewCircle.setBackgroundResource(background) 

No sé si esto funcionará porque no puedo probarlo ahora mismo. Por favor, hágame saber si está funcionando.

El problema es un choque de nombres, por lo que creo que importar alias puede ayudar.

Además de las ya muy buenas respuestas, si tiene los mismos ID en múltiples layouts en su proyecto, no debería importar cuál elija. Los ID similares, independientemente del layout que se haya definido, terminan apuntando a la misma vista. Por lo tanto, puede descartar las otras importaciones, dejando solo los layouts que le interesan en la activity/fragment/view actual

Espero que ayude

  • Cómo agregar funcionalidad +/- a un butting en Android kotlin
  • En Kotlin Lenguaje de progtwigción importancia de varargs en términos de usos
  • Extremadamente lento en autocompletado y análisis de código para proyectos Kotlin en Intellij IDEA
  • Este tipo tiene un constructor y debe ser inicializado aquí - Kotlin
  • Error de configuration automática del complemento kotlin-gradle
  • Extienda la comprobación de Mockito para que Kotlin no funcione (de manera "kotlin")
  • ¿Cómo crear un button en Kotlin que abre una nueva actividad (Android Studio)?
  • Obteniendo exception de retrofit El tipo de retorno de método no debe include una variable de tipo o comodín en kotlin
  • La propiedad en la interfaz no puede tener un campo de respaldo
  • registerReceiver () muestra error por método sobrecargado
  • Error: ejecución fallida para la tarea ': aplicación: limpiar'. No se puede borrar el file