¿Qué es mejor android.R o personalizado R?

Cuando empecé a desarrollar aplicaciones android, tuve la tendencia a definir valores R personalizados donde sea que lo necesite, en particular en los archivos de diseño. Por ejemplo:

findViewById(R.id.customerName).setText(customer.getName()) 

Con diseño:

 <TextView android:text="TextView" android:id="@id/customerName" android:layout_height="wrap_content" android:layout_width="fill_parent" /> 

Ahora me doy cuenta, podría ser mejor usar android.R lugar.

 findViewById(android.R.id.text1).setText(customer.getName()) 

Con diseño:

 <TextView android:text="TextView" android:id="@android:id/text1" android:layout_height="wrap_content" android:layout_width="fill_parent" /> 

¿Qué práctica sigue? ¿Cuales son las ventajas y desventajas de cada uno?

android.R está destinado a la utilización de recursos incorporados al sistema operativo.

Hay muchas imágenes / layouts / etc … que vienen con el sistema operativo que sólo se puede hacer referencia usando android.R

Si está haciendo referencia a sus propios recursos que ha creado, la mayoría siempre utiliza R. y en la mayoría de las situaciones, recomiendo tratar de mantenerse alejado de los recursos incorporados a medida que cambian la versión a la versión.

Personalizado. Los identificadores proporcionados por el sistema vienen con el riesgo de referirse, en código, a un recurso que no está presente en el proyecto. Los identificadores de aduanas existen si hay un recurso correspondiente: un dibujable, una vista, un diseño o lo que tiene.

Necesita su propia clase R.java ya que contiene referencias a todos sus recursos (diseños, imágenes, cadenas, etc.)

Si desea obtener una referencia a una vista con id de "myView", debería utilizar R.id.myView. Si desea obtener una referencia a los recursos de Android incorporados, debería utilizar android.R.id.text

Echa un vistazo a la siguiente página:

http://developer.android.com/guide/topics/resources/accessing-resources.html

No existe una gran ventaja o desventaja del ID de marco frente al ID personalizado en los diseños.

Ventajas de utilizar identificadores de marco:

  • Evite la creación de más identificadores. Guarda un campo en el apk (y hay un límite de tamaño apk).
  • Debe utilizarse en algunas situaciones, como ListActivity

Inconvenientes del uso de identificadores de marco:

  • No proporcione un nombre descriptivo

En ambas prácticas

  • El código funcionará en el futuro
  • Las referencias que faltan se descubren en tiempo de ejecución y se ocultan en tiempo de compilación

Pensé que las muestras en el SDK me ayudaría a tomar una decisión, y (adivina qué?) No lo hace. Las aplicaciones de Bloc de notas y LunarLander utilizan el android.R.id para los identificadores de vista, mientras que el proyecto de ApiDemos utiliza identificadores personalizados.

¿La mejor práctica para GestureBuilder que mezcla ambos enfoques? ( @+id/addButton @android:id/empty y @android:id/empty )

IHMO, peor práctica para HelloActivity y JetBoy que definen @+id/text @+id/Button01 … Esto no es descriptivo y podría haber sido reemplazado por ( @andoid:id/button1 , o por @+id/startButton )

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.