Android: entero del recurso xml

110

¿Cómo tengo que modificar mis recursos XML, o qué archivo XML tengo que crear, para acceder a los valores enteros de la misma forma que accedes a los valores de cadena R.string.some_string_resource?

Por ejemplo, en el código quiero decir:

ProgressDialog progressBar = new ProgressDialog(getContext());
progressBar.setMax(getInteger(R.integer.maximum));

¿Es posible?

Terry
fuente

Respuestas:

263

Sí, es posible, se vería así:

  1. Cree un archivo de recursos xml en la carpeta /res/values/llamada integers.xml.

    Puedes darle el nombre que quieras, pero elige uno que sea obvio.

  2. En ese archivo de recursos, cree sus valores enteros.

    Su archivo entonces se ve así:

    <?xml version="1.0" encoding="utf-8"?>
    <resources>    
        <integer name="maximum">100</integer>
        ...
    
    </resources>
  3. Haga referencia al valor entero en el código Java de esta manera:

    Es un poco diferente del getString(), tienes que dar un pequeño desvío.

    ProgressDialog progressBar = new ProgressDialog(getContext());
    int max = getContext().getResources().getInteger(R.integer.maximum);
    progressBar.setMax(max);
Terry
fuente
1
Eso es un valor doble, no un número entero. Tal vez lo pregunte en una pregunta separada de StackOverflow.
Terry
1
@Terry Entonces, ¿es este el método preferido para usar Integers en Android? Normalmente lo codifico en el código mismo. ¿Cuál es tu recomendación?
capt
2
@ capt.swag Normalmente codificas enteros como constantes en el código de cada clase según corresponda. Pero si necesita tener diferentes constantes para diferentes diseños (es decir, número de columnas para una cuadrícula), entonces usará archivos XML para adaptar esa constante a varios anchos de pantalla. Espero que ayude
rommex
1
¿Puedo usar ese valor entero directamente en XML?
Arbaz.in
1
@ capt.swag sí, ese es el método preferido
Bato-Bair Tsyrenov
5

Debe agregar el archivo integers.xml a su proyecto

ingrese la descripción de la imagen aquí

y entonces

ingrese la descripción de la imagen aquí

y en integers.xml agregue esto

<integer name="maximum">5</integer>
abolfazl bazghandi
fuente