2012-07-20 13 views
13

No estoy seguro de que alguien haya tenido alguna molestia con este problema anteriormente, pero es un gran dolor para mí.¿Cuál es la mejor práctica para nombrar la identificación del elemento XML en Android?

¿Cómo le das un elemento id to xml en android?

En este momento, configuré la identificación con el patrón [actividad/nombre del fragmento] [tipo de elemento] [nombre específico]. Por ejemplo, si tuviera un EditText para guardar un correo electrónico que se usa en LoginActivity, le daré el id 'LoginEditTextEmail'.

El problema que estoy enfrentando es que, con este enfoque, el ID a menudo termina en uno muy largo.

¿Cómo se establece la identificación? cual es la mejor practica?

Respuesta

5

Estás complicando las cosas. Solo nómbrelo de cualquier manera que sea memorable para usted. Los ID solo tienen que ser únicos por XML (es decir, puede tener 50 diseños diferentes con el ID de my_edittext), ya que encuentra una vista por su ID solo a través de una única jerarquía de vistas.

+0

Ah, ya veo. Gracias a @kcoppock, si se necesita que la identificación sea única solo en una jerarquía de vista única, entonces es claro dejar otros fragmentos. ; D –

+0

@kcoppock, ¿se convierte en un problema para fragmentos hermanos o fragmentos anidados? – bcorso

+0

Puede serlo si está buscando vistas de fragmento de la actividad, pero si está haciendo toda la manipulación de la vista dentro del fragmento (que normalmente debería) no será un problema. – kcoppock

1

Como nombrar cualquier cosa, tiendo a usar el nombre más corto posible que lo describa con precisión. En el caso de los identificadores para diseños, solo asegúrese de que cada identificación sea única en su diseño (puede reutilizar el mismo ID en un diseño diferente).

12

Los nombres descriptivos son ideales (lo mismo que con el nombre de cualquier variable en cualquier lenguaje de programación).

yo creo que hay un buen sistema ya me gustaría ofrecer estas formas posibles para reducir el tamaño de sus identificaciones

[actividad/nombre del fragmento] - Personalmente me gustaría dejar esto, tiendo a utilizar una disposición archivo por actividad/fragmento de todos modos para que no haya confusión en qué actividad debe estar la vista. También hay momentos en que reutilizo algunos widgets de Vista en actividades múltiples y los dejaré con la misma ID para que el código encontrar e interactuar con ellos se simplifica (es decir, se puede copiar/pegar o poner en una subclase de actividad)

[tipo de elemento] - Puedo utilizar una abreviatura de 3 letras para los tipos de controles:

  • Edt = EditarTexto
  • Txt = TextView
  • Etq = TextView que es estático para etiquetar algo
  • Btn = Botón
  • Prg = ProgressBar
  • Lyt = Disposición
  • etc ...

[nombre específico] - no hay una mejora real que deba hacerse aquí, tiene que ser tan larga como debe ser para describir para qué sirve.

+1

Gracias a @Tim, si pudiera dejar el nombre de actividad/fragmento, entonces es lo mejor. Lo agregué básicamente porque no entendí el procedimiento de búsqueda de id lo suficientemente bien. –

+1

ciertamente puede dejarlo en =), yo personalmente tiendo a no usar eso. – FoamyGuy

0

gota fragmento, la actividad y el tipo a menos que calificar éstos en la codificación, por lo que:

boolean isLoggedIn = false;

android:id="@+id/is_logged_in"

Como se ha mencionado en otras respuestas XML proporciona la clasificación, ahora usted tiene que decidir si la coherencia y/o una mayor calificación es necesaria y, si corresponde. ¿Realmente necesita calificar y, si no lo hace, respaldará el código que será mucho más difícil para usted o para alguien más?

¿Y qué hay de strings.xml?

prefijan la identificación con un calificador de actividad o frag. Así, por ejemplo:

<string name="profile_is_logged_in_true">Logged in.</string>

<string name="profile_is_logged_in_false">Not logged in.%</string>

también y hellip;

<plurals name="plural_is_logged_in_duration">...

he jugueteó con:

<string name="profile_isloggedin_false">Not logged in.</string>

Pero aún no están convencidos. Este es en realidad un problema de clasificación, ahora que se ha solucionado en otras disciplinas mediante el etiquetado. Java proporciona espacio de nombres de puntos y escriba los calificadores, por lo

com.example.android.app.profile.State.isLoggedIn

Android usa cosas como R.string :-) Así que tienes el Java más algo de espacio de nombres adicional de Android. No se olvide que usted puede tener más de un archivo de recursos de cadena, así que quizás:

res/values/widget_defaults.xml

podría contener algunos valores por defecto para decir una TextView. Las cadenas verdaderas y falsas deben manejarse mediante plurales, pero el ejemplo con suerte ayuda, a pesar de un pequeño esfuerzo.

Cuestiones relacionadas