Trabalhando com a classe Resources

Inserir  o valor “Tássio”, que está no documento string.xml com o id “name”, em uma  TextView é simples, veja abaixo.
string.xml
myView.xml


Agora, como seria inserir em tempo de execução, ou seja,  como fazer isso de dentro de uma activity? De imediato poderíamos pensar em fazer dessa forma.
 

class MyActivity extends Activity {
         @Override
         public void onCreate(Bundle bundle) {
                     super.onCreate(bundle);
                     setContentView(R.layout.main);
 
                     TextView textView = (TextView) findViewById(R.id.myTextView);
                     textView.setText(R.string.name);
         }
}

Porém, se você tentar escrever esse código, vai notar que R.string.name não retorna a string “Tássio”, mas sim um número que identifica essa string. Então como seriamos capaz de capturar o valor “Tássio”? Isso é possível através de um objeto da classe Resources (android.content.res), que representará e dará acesso aos itens que tiverem dentro da pasta resources.
       Para capturarmos esse item do documento string.xml basta chamarmos o método getResources() da activity, que o herdou da classe pai, ContentWrapper.

Capturando uma String

       Com o objeto em mãos podemos chamar o seu método getString(int) e passarmos a ele aquele tal número de identificação da nossa string “name”, que é capturado através do caminho R.string.name. Vamos então consertar o nosso exemplo.
 

class MyActivity extends Activity {
         @Override
         public void onCreate(Bundle bundle) {
                     super.onCreate(bundle);
                     setContentView(R.layout.main);
 
                     TextView textView = (TextView) findViewById(R.id.myTextView);
                     textView.setText(getResources().getString(R.string.name));
         }
}

Capturando um StringArray

É possível inserir um vetor de nomes por exemplo como um item de resource. Esse vetor tem como tag e cada um de seus elementos são representados pela tem . Um exemplo completo pode ser visto abaixo.
E como seria para capturarmos esse vetor ou um item dele da mesma forma que fizemos com a string? Ao invés de usarmos o método getString(int) do objeto da classe Resource, vamos usar o método getStringArray(int) e passarmos da mesma forma o número de identificação (index) do nosso vetor que é capturado no path R.array.myArray.
 

class MyActivity extends Activity {
         @Override
         public void onCreate(Bundle bundle) {
                     super.onCreate(bundle);
                     setContentView(R.layout.main);
 
                     String[] names  = getResources().getStringArray(R.array.myArray);
         }
}

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s