>

Fórum

Fórum da RL System, voltado para analistas, programadores etc. Tudo sobre linguagem de programação e desenvolvimento Full Stack: Banco de Dados, Android, C#, Java, .NET, PHP, Node, Javascript, TypeScript, Front, HTML e muito mais.



setBackground usando String como argumento


Bom pessoal...

Minha dúvida é a seguinte:

Criei a seguinte matriz unidimensional:

String v[] = new String[3];

v[0] = "@drawable/imagem1";
v[1] = "@drawable/imagem2";
v[2] = "@drawable/imagem3";

Gostaria de colocar esse "caminho" da imagem num botão através do método setBackground da seguinte forma:

botao.setBackground(v[0]);

Já tentei usar o setBackgroundResource, porém ambos não aceitam String como argumento.

Alguém pode me ajudar?!

OBS. Não posso fazer de outras maneiras. Tem que ser com o uso da matriz!






3 Respostas


o que você quer colocar no botão? o texto do caminho ? ou uma imagem no botão ?
Para colocar apenas o texto contido no vetor, use a instância criada do botão junto com o método setText(), passando por parâmetro o vetor desejado> Se deseja colocar um fundo no botão nao poderá apenas especificar o caminho em uma string, terá de utilizar o método setBackgroundResource enviando por parâmetro o id do fundo drawable através da classe R, por exemplo: setBackgroundResource (R.drawable.imagem1). note que a imagem1 de fundo deverá estar na pasta res/drawable para ser reconhecida




Eu quero colocar a imagem no botão...

Mas como eu disse, as imagens devem estar carregadas numa matriz, ou seja, não posso usar o código que vc sugeriu:

setBackgroundResource (R.drawable.imagem1);

Teria que ser algo parecido com:

setBackgroundResource (v[0]);

Entendeu?




Sim entendi, o que ocorre é que o método setBackgroundResource() requer um int que identifica a imagem na pasta res/drawable. Entenda que a cada recurso colocado na pasta res do android, é gerado na classe R um valor inteiro hexadecimal para você poder manipula-lo via código java. Logo você esta tentando passar um vetor de string, assim é apenas texto que vc esta tentando passar, e por mais que seja o caminho correto, não passará de um sinalização textual. Se no seu projeto requer muito usar vetores, sugiro que atribua o caminho das imagens em um vetor Integer(int/inteiro) e referencialos como parâmetro do método setBackgroundResource().

Ex: Int v[] = new Int[3];

v[0] = R.drawable.imagem1;
v[1] = R.drawable.imagem2;
v[2] = R.drawable.imagem3";

Assim o comando R.drawable.imagem1 retornará ao vetor v na posição 0 o valor hexadecimal dele na classe R, assim você poderá referencia-lo no método setBackgroundResource(). Espero que tenha ficado claro, qualquer coisa estamos ae!