¿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:
- Android Set ImageView image src en estilo
- Cambiar el estilo de ProgressDialog
- ¿Por qué la convención de Android no sigue a Java regular
- Java codificación de estilo (Android), ¿debo declarar las variables en una línea separada?
- Cambiar el estilo de AlertDialog
<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?
- ¿Cómo puedo seleccionar el elemento seleccionado en Android ListView?
- Cómo cambiar el estilo de pestaña en Android?
- Necesita una respuesta definitiva para diseñar las pestañas de Android ActionBar
- ¿Dónde escribir @Override?
- Puedo cambiar el aspecto y la sensación de la clickablespan
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
)