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


 
Herramientas
  #1  
Viejo 21/11/14, 00:12:24
Avatar de Guixe94
Guixe94 Guixe94 no está en línea
Desarrollador
Mensajes: 900
 
Fecha de registro: abr 2012
Localización: Barcelona, Catalunya
Mensajes: 900
Modelo de smartphone: HTC ONE y Galaxy Note 3
Versión de ROM: Ultima Orange Stock
Tu operador: Orange
Mencionado: 0 comentarios
Tagged: 0 hilos
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
Avatar de kriogeN
kriogeN kriogeN no está en línea
Colaborador/a
Mensajes: 4,637
Compra y venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Versión de ROM: CM13 - CM 11
Tu operador: Vodafone
Mencionado: 60 comentarios
Tagged: 3 hilos
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
Avatar de Guixe94
Guixe94 Guixe94 no está en línea
Desarrollador
Mensajes: 900
 
Fecha de registro: abr 2012
Localización: Barcelona, Catalunya
Mensajes: 900
Modelo de smartphone: HTC ONE y Galaxy Note 3
Versión de ROM: Ultima Orange Stock
Tu operador: Orange
Mencionado: 0 comentarios
Tagged: 0 hilos
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
Avatar de kriogeN
kriogeN kriogeN no está en línea
Colaborador/a
Mensajes: 4,637
Compra y venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Versión de ROM: CM13 - CM 11
Tu operador: Vodafone
Mencionado: 60 comentarios
Tagged: 3 hilos
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
Avatar de Guixe94
Guixe94 Guixe94 no está en línea
Desarrollador
Mensajes: 900
 
Fecha de registro: abr 2012
Localización: Barcelona, Catalunya
Mensajes: 900
Modelo de smartphone: HTC ONE y Galaxy Note 3
Versión de ROM: Ultima Orange Stock
Tu operador: Orange
Mencionado: 0 comentarios
Tagged: 0 hilos
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
Avatar de Guixe94
Guixe94 Guixe94 no está en línea
Desarrollador
Mensajes: 900
 
Fecha de registro: abr 2012
Localización: Barcelona, Catalunya
Mensajes: 900
Modelo de smartphone: HTC ONE y Galaxy Note 3
Versión de ROM: Ultima Orange Stock
Tu operador: Orange
Mencionado: 0 comentarios
Tagged: 0 hilos
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   HTCMania > Todo sobre Android > Programación y Desarrollo para Android

Herramientas

Reglas de Mensajes
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Las caritas están On
Código [IMG] está On
Código HTML está Off

Saltar a Foro



Hora actual: 04:03:05 (GMT +2)

Cookies settings
Powered by vBulletin™
Copyright © vBulletin Solutions, Inc. All rights reserved.
 
HTCMania: líderes desde el 2007