2012-03-16 21 views
6

He leído todo que los fragmentos de anidación debe ser evitado, pero no puedo ver cómo se hace la siguiente (por ejemplo here.):¿Hay alguna alternativa a los Fragmentos anidados?

Estoy trabajando en una aplicación de pestaña (android:minSdkVersion="12") con la siguiente interfaz de usuario :

enter image description here

la barra de búsqueda es siempre aquí y el usuario puede navegar a través de varias opciones de menú ('casa', 'galería' ...). Mi idea era usar una BaseActivity con un diseño que contenga la barra de búsqueda y un FrameLayout en el que cargaría el Fragmento correspondiente a la opción de navegación del usuario.

Mi problema es que en el Fragmento 'Inicio' tengo varias pestañas, que quería implementar de la misma manera, es decir, con un diseño que contiene la barra de pestañas y un FrameLayout en el que cargaría el Fragmento correspondiente, y esto conduce a Fragmento anidado ...

Sé que en lugar de BaseActivity podría usar varias actividades e incluir la barra de búsqueda en cada diseño, pero haría que aparezca y desaparezca cada vez que el usuario cambie las actividades ...

EDITAR

También necesito un pie de página fijo, por lo que no puedo usar la barra de acciones como lo propuso CommonsWare en su respuesta.

¿Alguien podría ayudar?

Respuesta

3

Hay fragmentos anidados !!!!!!! en la versión de biblioteca nuevo soporte (v4 apoyar biblioteca, versión 11)

0

¿No puedes hacer barras de pestañas en el diseño de BaseActivity? Luego, en el diseño de BaseActivity se mostrará la barra de búsqueda, la barra de pestañas y el marco de fragmentos. Si no desea la barra de navegación en algún fragmento, puede establecer la visibilidad de View.GONE en la barra de navegación.

2

Puede usar ViewPager y FragmentPagerAdapter para esto. ViewPager permite a los usuarios deslizar entre vistas o (en su caso) Fragments. Para mostrar tablike-controls, use ViewPagerIndicator.

Usando la organización que ha descrito, en lugar de cargar un Fragment en el FrameLayout, inflarlo con un diseño como este:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical"> 

    <com.viewpagerindicator.TabPageIndicator 
     android:id="@+id/viewpagerIndicator" 
     android:layout_height="wrap_content" 
     android:layout_width="match_parent" /> 
    <android.support.v4.view.ViewPager 
     android:id="@+id/viewpager" 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="1" /> 

</LinearLayout> 

A continuación, asignar un FragmentPagerAdapter a su ViewPager, que luego cargar sus fragmentos.

También eche un vistazo a my answer here. Da un ejemplo más detallado. Tenga en cuenta sin embargo, que se extiende PagerAdapter, en lugar de la FragmentPagerAdapter que debe utilizar.

0

Mi idea era utilizar una BaseActivity con un diseño que contenga la barra de búsqueda y un FrameLayout en el que cargaría el Fragmento correspondiente a la opción de navegación del usuario.

Si usa actividades separadas, en lugar de intentar forzar todo en una sola actividad, no terminará con fragmentos anidados.

+0

pero con varias actividades que no pueden tener el cuadro de búsqueda como una cabecera fija, ¿verdad? Tendría que incluirlo en el diseño de cada actividad y se volverá a cargar cada vez que cambie las actividades (es decir, desde el punto de vista de la IU desaparecería y reaparecería). Lo mismo si creo varias actividades para las pestañas. – jul

+1

@jul: "Pero con varias actividades no puedo tener el cuadro de búsqueda como un encabezado fijo, ¿verdad?" - Ponlo en la parte superior de cada una de las actividades. Mejor aún, póngalo en la barra de acción. "Tendría que incluirlo en el diseño de cada actividad y se volverá a cargar cada vez que cambie las actividades (es decir, desde el punto de vista de la IU desaparecería y reaparecería)" - sí. – CommonsWare

+0

Ok, voy a verificar si puedo personalizar la barra de acciones porque quiero la barra de búsqueda. También necesitaría un pie de página fijo, así que si puedo tener dos barras de acción y se pueden personalizar, lo usaré. Gracias. – jul

0

Buenas noticias !!!!! la biblioteca de soporte android versión 11 ya es compatible con el fragmento anidado. Support Package, revision 11 (November 2012)

Cambios para biblioteca de soporte v4:
        interfaz de usuario
                ha añadido soporte para las clases de fragmentos anidados.

cómo implementar fragmento anidada, desde android developer

Ahora puede incrustar fragmentos dentro de los fragmentos. Esto es útil para una variedad de situaciones en las que desea colocar componentes de interfaz de usuario dinámicos y reutilizables en un componente de la interfaz de usuario que a su vez es dinámico y reutilizable. Por ejemplo, si usa ViewPager para crear fragmentos que se deslizan hacia la izquierda y derecha y consumen la mayor parte del espacio de la pantalla, ahora puede insertar fragmentos en cada página de fragmento.

Hay alguna clave aquí: getChildFragmentManager() y getParentFragment()

Cuestiones relacionadas