Home Menu

Menu



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 13/07/14, 19:47:05
Avatar de Bongiovi
Bongiovi Bongiovi no está en línea
Miembro del foro
Mensajes: 186
 
Fecha de registro: oct 2012
Localización: España
Mensajes: 186
Modelo de smartphone: Motorola Moto G , BQ Maxwell 2 Lite
Tu operador: Simyo
Mencionado: 0 comentarios
Tagged: 0 hilos
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
Avatar de mocelet
mocelet mocelet no está en línea
Desarrollador
Mensajes: 2,203
 
Fecha de registro: may 2011
Localización: Madrid
Mensajes: 2,203
Tu operador: -
Mencionado: 17 comentarios
Tagged: 2 hilos
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.
Responder Con Cita
  #3  
Viejo 14/07/14, 14:04:28
Avatar de Bongiovi
Bongiovi Bongiovi no está en línea
Miembro del foro
Mensajes: 186
 
Fecha de registro: oct 2012
Localización: España
Mensajes: 186
Modelo de smartphone: Motorola Moto G , BQ Maxwell 2 Lite
Tu operador: Simyo
Mencionado: 0 comentarios
Tagged: 0 hilos
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
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
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
Avatar de Bongiovi
Bongiovi Bongiovi no está en línea
Miembro del foro
Mensajes: 186
 
Fecha de registro: oct 2012
Localización: España
Mensajes: 186
Modelo de smartphone: Motorola Moto G , BQ Maxwell 2 Lite
Tu operador: Simyo
Mencionado: 0 comentarios
Tagged: 0 hilos
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   HTCMania > Todo sobre Android > Programación y Desarrollo para Android


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: 18:13:42 (GMT +2)

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