2012-04-12 18 views

Respuesta

8

el segundo enfoque es más elegante, ya que internamente, el TextView (o lo que sea View -class) hará el trabajo de conseguir? la Cadena para su recurso especificado.

Dejar que los componentes hagan el trabajo interno siempre es preferible. Además, es más corto y más legible.


Acerca de los componentes internos que hablé: Si usted tiene un vistazo a los androides código fuente, se puede ver que el setText(int) -method de TextViewis implemented like this:

public final void setText(int resid) { 
    setText(getContext().getResources().getText(resid)); 
} 

Así, internamente utiliza el Context -clase para obtener la cadena de la id de recurso. Ahora, si nos fijamos en la getText() -method (que también viene de la Context -class), se puede ver que is implemented the same way:

public final String getString(int resId) { 
    return getResources().getString(resId); 
} 

Así, por rendimiento o la confiabilidad de razones, no hace ninguna diferencia. Aún así, es más corto y más legible.

+0

Gracias, perfecto! –

+1

@Shamrflow Actualicé la respuesta con algún código de la fuente de Android para mostrar, que se implementa de la misma manera. Echar un vistazo. –

+0

Gracias Lukas, incluso mejor. Me di cuenta de que también es cierto para setTitle y setMessage en AlertBuilder, y algunas otras clases. ¡Aclamaciones! –

1

Bueno, dado que la API proporciona un método para pasar el ID de cadena de recursos, parece ser lógico preferir usar esto. En realidad, puedes comprobar el funcionamiento de setText (resourceid) para ver debajo del capó, pero setText (R.strings.whatever) es definitivamente recomendable.

0

Puede añadir

yourEditText.setText(getResources().getString(R.string.mytext)); 

porque es necesario obtener el contexto de recursos, después de obtener la cadena.

Cuestiones relacionadas