Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android

Respuesta
 
Herramientas
  #1  
Viejo 21/11/14, 00:12:24
Array

[xs_avatar]
Guixe94 Guixe94 no está en línea
Desarrollador
 
Fecha de registro: abr 2012
Localización: Barcelona, Catalunya
Mensajes: 900
Modelo de smartphone: HTC ONE y Galaxy Note 3
Tu operador: Orange
Cambiar background a la vez

Hola,

Tengo una actividad con 30 botones, y tengo una variable llamada "Nivel", todos los botones tienen un background gris, pero quiero que por ejemplo si la variable nivel es igual a 23 pues que todos los botones asta el 23 se cambie el background a verde.

Los botones tienen las id's: bt1, bt2, etc. (de momento).

Se puede hacer pues con if, else if, else if, etc. pero claro es muchisimo codigo y seguramente minimo añadire asta 100 botones. Por eso queria saber si alguien podria decirme alguna forma con un bucle o algo?

yo he pensando por ejemplo con un bucle "for", que me cree la variable por ejemplo "i" y cada vez que i<nivel me aumente en 1 esta variable y pues asi me vaya cambiando todos los background, el problema es que dentro del bucle no se como hacer para que me coja el digito numerico de "i" y le añada bt delante por ejemplo para poder poner bt1.setBackgr.. es posible eso? o no se puede?


Gracias chic@s como siempre.

Última edición por Guixe94 Día 21/11/14 a las 09:12:28.
Responder Con Cita


  #2  
Viejo 21/11/14, 00:23:53
Array

[xs_avatar]
kriogeN kriogeN no está en línea
Colaborador/a
· Votos compra/venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Tu operador: Vodafone
Puedes obtener el id de una View así:

int botonID = getResources().getIdentifier("boton", "id", getPackageName());

Para luego obtener el botón así:

findViewById(botonID);

Es decir, que podrías hacer esto:

for (int i=1;i<=ultimoNivel;i++) {
int botonID = getResources().getIdentifier("bt"+i, "id", getPackageName());
......
}
Responder Con Cita
Gracias de parte de:
  #3  
Viejo 21/11/14, 00:27:11
Array

[xs_avatar]
Guixe94 Guixe94 no está en línea
Desarrollador
 
Fecha de registro: abr 2012
Localización: Barcelona, Catalunya
Mensajes: 900
Modelo de smartphone: HTC ONE y Galaxy Note 3
Tu operador: Orange
 Cita: Originalmente Escrito por kriogeN Ver Mensaje
Puedes obtener el id de una View así:

int botonID = getResources().getIdentifier("boton", "id", getPackageName());

Para luego obtener el botón así:

findViewById(botonID);

Es decir, que podrías hacer esto:

for (int i=1;i<=ultimoNivel;i++) {
int botonID = getResources().getIdentifier("bt"+i, "id", getPackageName());
......
}
Muchas gracias!
Y entonces para cambiar el background? Por que claro no puedo poner botonID.setBackgr... ya que es un int..
Responder Con Cita
  #4  
Viejo 21/11/14, 00:31:56
Array

[xs_avatar]
kriogeN kriogeN no está en línea
Colaborador/a
· Votos compra/venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Tu operador: Vodafone
Te lo he dicho, una vez que tienes el botonID haces:

((Button)findViewById(botonID)).setBack....
Responder Con Cita
Gracias de parte de:
  #5  
Viejo 21/11/14, 00:33:03
Array

[xs_avatar]
Guixe94 Guixe94 no está en línea
Desarrollador
 
Fecha de registro: abr 2012
Localización: Barcelona, Catalunya
Mensajes: 900
Modelo de smartphone: HTC ONE y Galaxy Note 3
Tu operador: Orange
 Cita: Originalmente Escrito por kriogeN Ver Mensaje
Te lo he dicho, una vez que tienes el botonID haces:

((Button)findViewById(botonID)).setBack....

Es verdad, lo siento.

Muchas gracias por todo!

Algún día tengo que invitarte a algo..!
Responder Con Cita
  #6  
Viejo 21/11/14, 00:55:10
Array

[xs_avatar]
Guixe94 Guixe94 no está en línea
Desarrollador
 
Fecha de registro: abr 2012
Localización: Barcelona, Catalunya
Mensajes: 900
Modelo de smartphone: HTC ONE y Galaxy Note 3
Tu operador: Orange
 Cita: Originalmente Escrito por kriogeN Ver Mensaje
Te lo he dicho, una vez que tienes el botonID haces:

((Button)findViewById(botonID)).setBack....
Tengo un problema, mi codigo actual es este:

[PHP] for ( int xd=1; xd<Integer.parseInt(MyActivity.Nivel); xd++ ) {

int botonID = getResources().getIdentifier("bt"+xd, "id", getPackageName());
TVNiveles.setText(Integer.toString(xd));

(findViewById(botonID)).setBackgroundDrawable(getR esources().getDrawable(R.drawable.btpista));


}[/PHP]

Pero tal i como esta en el setBackground me da null pointer, pero el TVNiveles si que me pone el texto correctamente por el nivel.
Tambien si cambio esta frase y la pongo asi:

[PHP]int botonID = getResources().getIdentifier("bt"+1, "id", getPackageName());[/PHP]

Me funciona lo que claro solo me cambia el background del numero 1. Que falla? llevo un rato dandole vueltas pero no lo veo.

Gracias

EDITO: Ya esta solucionado, al parecer tenia la id del boton 13 mal escrita y por eso cuando llegaba a este me saltaba el null pointer, saludos.

Última edición por Guixe94 Día 21/11/14 a las 09:12:14.
Responder Con Cita
Respuesta

Estás aquí
Regresar   Portal | Indice > Todo sobre Android > Programación y Desarrollo para Android



Hora actual: 08:01:11 (GMT +2)



User Alert System provided by Advanced User Tagging (Lite) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.

Contactar por correo / Contact by mail / 邮件联系 /