Android: inteiro do recurso xml

110

Como devo modificar meus recursos XML, ou qual arquivo XML devo criar, para acessar valores inteiros da mesma forma que você acessa valores de string R.string.some_string_resource?

Por exemplo, no código, quero dizer:

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

É possível?

Terry
fonte

Respostas:

263

Sim, é possível, seria assim:

  1. Crie um arquivo de recursos xml na pasta /res/values/chamada integers.xml.

    Você é livre para dar qualquer nome que quiser, mas escolha um que seja óbvio.

  2. Nesse arquivo de recursos, crie seus valores inteiros.

    Seu arquivo será mais ou menos assim:

    <?xml version="1.0" encoding="utf-8"?>
    <resources>    
        <integer name="maximum">100</integer>
        ...
    
    </resources>
  3. Faça referência ao valor inteiro no código Java como este:

    É um pouco diferente do getString(), você tem que fazer um pequeno desvio.

    ProgressDialog progressBar = new ProgressDialog(getContext());
    int max = getContext().getResources().getInteger(R.integer.maximum);
    progressBar.setMax(max);
Terry
fonte
1
Esse é um valor duplo, não um número inteiro. Talvez você pergunte isso em uma pergunta StackOverflow separada.
Terry,
1
@Terry Então este é o método preferido para usar inteiros no android, eu geralmente o codifico no próprio código. Qual é a sua recomendação?
capt.swag
2
@ capt.swag Normalmente você codifica inteiros como constantes no código em cada classe, conforme apropriado. Mas se você precisar ter constantes diferentes para layouts diferentes (ou seja, número de colunas para uma grade), você usará arquivos XML para adaptar essa constante a várias larguras da tela. Espero que ajude
rommex
1
posso usar esse valor inteiro diretamente em XML?
Arbaz.in
1
@ capt.swag sim, esse é o método preferido
Bato-Bair Tsyrenov
5

Você deve adicionar o arquivo integers.xml ao seu projeto

insira a descrição da imagem aqui

e depois

insira a descrição da imagem aqui

e em integers.xml adicione este

<integer name="maximum">5</integer>
Abolfazl Bazghandi
fonte