![]() |
|
| 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 |
«
Tema Anterior
|
Siguiente tema
»
|
|
Herramientas |
|
#1
|
||||
|
||||
|
¿Se puede crear layouts aleatorios?
Hola buenas mi pregunta es si se pueden crear ventanas aleatorias que al pulsar un boton te lleve al layout 2 o al 5 o al 10 y si pudieras decirme el codigo os lo agradeceria mucho gracias.
|
|
|
|
#2
|
||||
|
||||
|
Por partes, en primer lugar necesitas obtener el ID de un layout a partir de su nombre en una cadena de texto, es decir, si normalmente para establecer un Layout haces esto:
setContentView(R.layout.nombre); Necesitarías hacer esto: int layout = getResources().getIdentifier("nombre", "layout", getPackageName()); setContentView(layout); Ahora, para abrir un layout al azar, vamos a ir a lo fácil y suponer que se llaman: layout1, layout2, layout3 ,hasta por ejemplo layout10. Necesitas obtener un número al azar entre 1 y 10, así: Random random = new Random(); int r = random .nextInt(10) + 1; Y concatenar el número al nombre: String nombre = "layout"+r; Todo junto: Random random = new Random(); int r = random .nextInt(10) + 1; String nombre = "layout"+r; int layout = getResources().getIdentifier(nombre, "layout", getPackageName()); setContentView(layout); |
|
#3
|
||||
|
||||
|
#4
|
||||
|
||||
|
Creo que el fallo es más que obvio,
Lo que yo te he puesto es un ejemplo que funciona en el caso de que los layout se llamen "layout1", "layout2" etc, en tu caso se llaman "ventana_2", "ventana_3", etc. Así que el String nombre debes adaptarlo a: String nombre = "ventana_"+r; Además, el random.nextInt(x) va desde 0 hasta x-1. Así que como en tu caso empiezas por ventana_2 y vas hasta ventana_10 debería ser algo así: int r = random .nextInt(9) + 2; O añadir un ventana_1 y dejar la línea como estaba, es decir, int r = random .nextInt(10) + 1; EDIT: Estoy viendo bastantes más fallos, como por ejemplo el lugar donde has puesto el código y que tengas 1 clase por cada Layout, esa no es la idea para lo que quieres, y si esa es la idea entonces lo he entendido mal y lo que quieres es lanzar una nueva Activity basada en su nombre. Para poder realizar eso es bastante más complejo, porque hay que usar reflexión. Última edición por kriogeN Día 12/10/15 a las 22:01:08 |
|
#5
|
||||
|
||||
| Respuesta |
Estás aquí
|
||||||
|
||||||
«
Tema Anterior
|
Siguiente tema
»
| Herramientas | |
|
|
Hora actual: 16:56:54 (GMT +1)
HTCMania: líderes desde el 2007









