¿Hay algún uso legítimo para @ + android: id?

Después de actualizar mis herramientas de Android a la última versión para trabajar en API21 , intentar compilar mi proyecto resultó en el siguiente error:

  • update_languages_button_preference_layout.xml: 2: nota: ¿Quieres usar @ + id en lugar de @ + android: id ?
  • update_languages_button_preference_layout.xml: 2: error: creando un recurso para el paquete externo android: id / layout.
  • update_languages_button_preference_layout.xml: 2: error: Error: Ningún recurso encontrado que coincida con el nombre dado (en 'id' con el valor '@ + android: id / layout' ).

El problema parece ser la línea android:id="@+android:id/layout" : reemplazar @ + android: id por @ + id fue suficiente para poder compilar y ejecutar el proyecto normalmente.

Sin embargo, una búsqueda rápida a través de toda la base de código reveló algunas otras ubicaciones en el proyecto donde se utiliza la construcción android:id="@+android:id/... Estos aparentemente no impidieron que el proyecto pasara todas las pruebas, incluso si no puedo asegurar que todos están todavía en uso.

  • ¿Hay algún uso legítimo de android:id="@+android:id que justificaría dejar esas referencias en nuestros archivos xml, y no reemplazarlas por @+id ?

  • ¿Por qué no plantearon el mismo error que el primer archivo?

No, nunca debes usar @ + android: id en tu aplicación. El espacio de nombres android está reservado para el framework. Esto nunca ha sido seguro para una aplicación y ahora generará un error de compilación.

Para un poco de fondo, la generación de nuevos IDs dentro del espacio de nombres android los pondrá en el espacio no utilizado después de los identificadores de espacio de nombres android existentes. Esto funcionará bien hasta que se agreguen nuevos identificadores en el marco, momento en el que su ID interno se superpondrá con un ID de marco real y causará problemas extraños.

En cuanto a las otras instancias, éstas deberían estar generando errores también. Es posible que haya un error en AAPT. Independientemente, debe eliminar todas las instancias de @ + android de sus recursos.

Aunque mi comentario es muy tarde. Me enfrenté al mismo problema hoy, cuando actualizó mi eclipse y herramientas. Cambiado @ + android: id a @ + id y resolvió mi problema.

  • Cómo centrar drawableTop y texto verticalmente en el botón en Android?
  • Android 9 patch xml dibujable
  • "OnClick" en AutocompleteTextView provoca un error
  • Ejecutar el comando shell desde android
  • Android.widget.TextView no se puede convertir en android.view.ViewGroup
  • Cómo mostrar solo el borde superior e inferior
  • Android nueve patch no se reconoce en el dispositivo
  • Diferentes tipos de análisis
  • Alinea el texto dentro de un botón en Android
  • ¿Hay un equivalente a setShadowLayer al definir formas en XML en Android?
  • Android: uso de parámetros de dimensión predefinidos en el diseño programático
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.