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 13/07/14, 19:47:05
Array

[xs_avatar]
Bongiovi Bongiovi no está en línea
Miembro del foro
 
Fecha de registro: oct 2012
Localización: España
Mensajes: 186
Modelo de smartphone: Motorola Moto G , BQ Maxwell 2 Lite
Tu operador: Simyo
Uso de Fragments

Quiero utilizar Fragments para, al hacer click sobre cierto elemento de un ListView, mostrar detalles de ese Item del ListView. Para hacer esto hago lo siguiente:

Creo una FragmentActivity donde alojo el ListView en un FrameLayout. El método onItemClick del ListView es el siguiente:

Código:
            @Override
            public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3) 
            {
                FT = getSupportFragmentManager().beginTransaction();
                FT.replace(R.id.fragment_container, fragment);
                FT.addToBackStack(null);
                FT.commit();
                
            }
Donde fragment_container es el FrameLayout comentado anteriormente y fragment contiene un Fragment que utilizo para probar. El problema es que el fragment se coloca encima de la ListView (se superpone). Pensaba que el xml que contiene el layout de la FragmentActivity se sustituye por el del fragment. Como consigo esto?

Un saludo!
Responder Con Cita


  #2  
Viejo 13/07/14, 20:06:44
Array

[xs_avatar]
mocelet mocelet no está en línea
Desarrollador
 
Fecha de registro: may 2011
Localización: Madrid
Mensajes: 2,203
Tu operador: -

Puedes sustituir un fragment por otro, ¿el ListView está en un fragment?

Cuando añades un fragment lo que hace es añadirlo al contenedor en cuestión, pero si ahí había cosas que no sea un fragment que el fragment manager haya puesto o tuvieras definido en el XML, entonces no lo quita.
__________________
El mejor Cuatro en Raya de Android (Hilo en HTCMania, Play Store) ¡Un millón de descargas!
Responder Con Cita
  #3  
Viejo 14/07/14, 14:04:28
Array

[xs_avatar]
Bongiovi Bongiovi no está en línea
Miembro del foro
 
Fecha de registro: oct 2012
Localización: España
Mensajes: 186
Modelo de smartphone: Motorola Moto G , BQ Maxwell 2 Lite
Tu operador: Simyo
 Cita: Originalmente Escrito por mocelet Ver Mensaje
Puedes sustituir un fragment por otro, ¿el ListView está en un fragment?

Cuando añades un fragment lo que hace es añadirlo al contenedor en cuestión, pero si ahí había cosas que no sea un fragment que el fragment manager haya puesto o tuvieras definido en el XML, entonces no lo quita.
Pasaba lo que tu has comentado, pero no consigo implementar el comportamiento que yo busco.

Ahora mismo tengo una FragmentActivity cuyo Layout es un FrameLayout, desde esta FragmentActivity ejecuto lo siguiente:

Código:
fragment = new EjBinariosDoneFragment();
        FT = getSupportFragmentManager().beginTransaction();
        FT.replace(R.id.fragment_container, fragment);
        FT.addToBackStack(null);
        FT.commit();
El Fragment contiene el ListView con un onItemClickListener que abre un segundo Fragment con detalles mediante el mismo código que he mostrado antes. El problema es que al pulsar Back sucesivamente se cierran los dos Fragments y se muestra la FragmentActivity (que está en blanco). También me gustaría que el Fragment con detalles no ocupara la pantalla completa.

Un saludo!
Responder Con Cita
  #4  
Viejo 14/07/14, 14:48:42
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
Para que al pulsar Back no vuelva atrás el Fragment sino la Activity basta con quitar la línea:

FT.addToBackStack(null);

Y si el comportamiento que buscas es el mismo que tiene por ejemplo GMail en Tablets, donde 1/4 de la pantalla es el ListView de correos y los otros 3/4 es el detalle del correo, lo que tienes que hacer es usar 2 FragmentLayout, en uno pones el Fragment con el ListView y en el otro vas haciendo "replace" de nuevos Fragments con el detalle, o también puedes poner un Fragment fijo con el detalle e ir cambiando su contenido con un método.
Responder Con Cita
  #5  
Viejo 14/07/14, 15:45:59
Array

[xs_avatar]
Bongiovi Bongiovi no está en línea
Miembro del foro
 
Fecha de registro: oct 2012
Localización: España
Mensajes: 186
Modelo de smartphone: Motorola Moto G , BQ Maxwell 2 Lite
Tu operador: Simyo
 Cita: Originalmente Escrito por kriogeN Ver Mensaje
Para que al pulsar Back no vuelva atrás el Fragment sino la Activity basta con quitar la línea:

FT.addToBackStack(null);

Y si el comportamiento que buscas es el mismo que tiene por ejemplo GMail en Tablets, donde 1/4 de la pantalla es el ListView de correos y los otros 3/4 es el detalle del correo, lo que tienes que hacer es usar 2 FragmentLayout, en uno pones el Fragment con el ListView y en el otro vas haciendo "replace" de nuevos Fragments con el detalle, o también puedes poner un Fragment fijo con el detalle e ir cambiando su contenido con un método.
Perfecto, muchas gracias.

En cuanto al comportamiento, yo pensaba más en una ventana algo más pequeña que la pantalla pero centrada en esta, viéndose el fragment con el ListView de fondo. También pensé en que el segundo fragment fuese algo "transparente", pero no lo tengo muy claro. Me gustaría probar, pero no sé como hacerlo ni encuentro información al respecto.
Responder Con Cita
Respuesta

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



Hora actual: 01:21:13 (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 / 邮件联系 /