|
||
|
![]() |
![]() |
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
|
||||
|
||||
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. |
|
#2
|
||||
|
||||
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()); ...... } |
Gracias de parte de: | ||
#3
|
||||
|
||||
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()); ...... } ![]() Y entonces para cambiar el background? Por que claro no puedo poner botonID.setBackgr... ya que es un int..
__________________
|
#4
|
||||
|
||||
Te lo he dicho, una vez que tienes el botonID haces:
((Button)findViewById(botonID)).setBack.... |
Gracias de parte de: | ||
#5
|
||||
|
||||
__________________
|
#6
|
||||
|
||||
[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. |
![]() |
![]() |
||||||
|