Inserir o valor “Tássio”, que está no documento string.xml com o id “name”, em uma TextView é simples, veja abaixo.
string.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);
}
}