Estoy escribiendo una aplicación para tabletas 4.0 y 4.1, para las cuales no quiero usar las bibliotecas de soporte (si no es necesario), sino solo la API 4.x.
Entonces mi plataforma de destino está muy bien definida como:> = 4.0 y <= 4.1
La aplicación tiene un diseño de múltiples paneles (dos fragmentos, uno pequeño a la izquierda, un fragmento de contenido a la derecha) y una barra de acción con pestañas.
Similar a ésto:
Al hacer clic en una pestaña de la barra de acción, se cambia el fragmento "externo" y el fragmento interno es un fragmento con dos fragmentos anidados (1. fragmento pequeño de la lista izquierda, 2. fragmento de contenido ancho).
Ahora me pregunto cuál es la mejor práctica para reemplazar fragmentos y especialmente fragmentos anidados. ViewPager es parte de la biblioteca de soporte, no hay una alternativa nativa 4.x para esta clase. Parecen estar "desaprobados" en mi sentido. - http://developer.android.com/reference/android/support/v4/view/ViewPager.html
Luego leí las notas de la versión para Android 4.2, ChildFragmentManager
que serían una buena opción, pero estoy apuntando a 4.0 y 4.1, por lo que tampoco se puede usar.
ChildFragmentManager
solo está disponible en 4.2
- http://developer.android.com/about/versions/android-4.2.html#NestedFragments
- http://developer.android.com/reference/android/app/Fragment.html#getChildFragmentManager ()
Desafortunadamente, casi no hay buenos ejemplos que muestren las mejores prácticas para el uso de fragmentos sin la biblioteca de soporte, incluso en todas las guías para desarrolladores de Android; y especialmente nada con respecto a los fragmentos anidados.
Entonces me pregunto: ¿no es simplemente posible escribir aplicaciones 4.1 con fragmentos anidados sin usar la biblioteca de soporte y todo lo que viene con ella? (¿necesita usar FragmentActivity en lugar de Fragment, etc.?) ¿O cuál sería la mejor práctica?
El problema que tengo actualmente en el desarrollo es exactamente esta declaración:
La biblioteca de compatibilidad de Android ahora también admite fragmentos anidados, por lo que puede implementar diseños de fragmentos anidados en Android 1.6 y versiones posteriores.
Nota: No puede inflar un diseño en un fragmento cuando ese diseño incluye un
<fragment>
. Los fragmentos anidados solo se admiten cuando se agregan a un fragmento de forma dinámica.
Porque puse definir los fragmentos anidados en XML, lo que aparentemente causa un error como:
Caused by: java.lang.IllegalArgumentException: Binary XML file line #15: Duplicate id 0x7f090009, tag frgCustomerList, or parent id 0x7f090008 with another fragment for de.xyz.is.android.fragment.CustomerListFragment_
Por el momento, concluyo por mí mismo: incluso en 4.1, cuando ni siquiera quiero apuntar a la plataforma 2.x, los fragmentos anidados como se muestra en la captura de pantalla no son posibles sin la biblioteca de soporte.
(Esto en realidad podría ser más una entrada de wiki que una pregunta, pero tal vez alguien más lo haya logrado antes).
Actualizar:
Una respuesta útil está en: Fragment Inside Fragment
ActionBar
(construido internamente por Samsung). Eche un vistazo más de cerca a ActionBarSherlock, tiene las pestañas en ActionBar si hay espacio.