Fragmentos de Android.app vs. android.support.v4.app usando ViewPager?


182

Tengo una pregunta sobre las bibliotecas de soporte de Android, los fragmentos y, como ejemplo específico, la ViewPagerclase. Mi intención es crear una aplicación con una funcionalidad similar a la muestra proporcionada en el sitio web para desarrolladores de Android ( http://developer.android.com/training/animation/screen-slide.html o http://developer.android.com/ entrenamiento / implementación-navegación / lateral.html ). Al examinar su código, me di cuenta de que utilizan la android.support.v4.appbiblioteca, que según mi investigación es la única forma de acceder a la ViewPagerclase.

En mi situación, no tengo interés en la compatibilidad con versiones anteriores. El nivel mínimo de API es 14 (Ice Cream Sandwich) y el objetivo de construcción es 4.2 Jelly Bean. En su forma más simple, mi aplicación funciona exactamente igual que la segunda demostración que vinculé en el sitio web de desarrollo de Android, simplemente deslizando entre tres pestañas con contenido en cada una.

Todos los artículos / publicaciones / respuestas que he leído parecen favorecer en gran medida la biblioteca de soporte v4 . Ahora para mi, aunque larga, pregunta (s):

  1. ¿Cuál es la mejor manera de estructurar mi aplicación, usando android.support.v4.app, y por lo tanto usando SupportFragments, o usar los Fragments provistos en android.app- y por qué?

  2. Si los Fragmentos de android.appson el camino a seguir, ¿cuál es la forma óptima de acercarse ViewPagers?

  3. Si SupportFragments son los más adecuados para la tarea, estimaría que poseen la misma funcionalidad que el otro, entonces, ¿cuál es el propósito de tenerlos dentro android.app?

Espero que alguien con una comprensión más clara pueda darme un poco de aclaración porque estoy aturdido ...


1
no se puede utilizar Fragmentssi está utilizando la ViewPagerque necesita para utilizar la biblioteca de soporteSupportFragment
tyczj

1
SupportFragmentno es una clase en el SDK de Android ...
Karakuri

2
@Karakuri Perdón por la confusión; No me refiero a una clase literal SupportFragment, simplemente me refiero a la Fragmentclase disponible en android.support.v4.app.
jonstaff

@jonstaff de cualquier manera, solo puede usar la clase de fragmento en la biblioteca de soporte
tyczj

@tyczj Gracias, pero eso realmente no responde la pregunta. Estoy buscando más por qué , ya que sé que no hay nada ViewPageradentro android.app.
jonstaff

Respuestas:


183

Puede usar ViewPagerfragmentos nativos del android.apppaquete con los adaptadores del paquete android.support.v13.app . Tienes que usar el jar de soporte v13 para eso.

Hay dos versiones de los adaptadores que funcionan ViewPager, las que están en el v4paquete están destinadas a ser utilizadas con fragmentos de soporte, las que están v13con fragmentos nativos.

La razón por la que ahora hay dos implementaciones de fragmentos es histórica: los fragmentos en el android.apppaquete se introdujeron con Android 3 solo para tabletas y la biblioteca de soporte se creó para llevar fragmentos a teléfonos con versiones anteriores. En Android 4 tienes ambos.

Desde mi propia experiencia, recomendaría usar fragmentos de soporte, incluso cuando se desarrolle para Android 4. Estas son algunas razones: ¿ Fragmento o Fragmento de soporte?


3
¡Gracias por esto! Sé que llego tarde a la fiesta, pero esta respuesta me ayudó mucho.
Kyle

support.v13 funciona para ViewPager ... hasta que intente usar ViewPager en un DialogFragment :-(
SteelBytes

android.appno lo tiene, FragmentPagerAdapterentonces se hace imposible usar viewpager con android.app.Fragment? alguna idea aqui? ¿hay alguna opción para el antiguo buscapersonas? Con el fin de enganchar dinámicamente fragmento para pestañas dados
Nikhil

@Nikhil hay dos versiones de FragmentPagerAdapter. Uno en el android.support.v4.apppaquete funciona con fragmentos de soporte, el otro android.support.v13.appcon fragmentos 'normales'
brillenheini

Esperaba usar v13 para poder evitar usar v4. Resulta que v4 es una dependencia para v13, por lo que también podría usar los fragmentos de soporte / ver paginador.
Vas

3

android.app.FragmentLa clase está en desuso desde Android P ( enlace ), por lo que solo android.support.v4.app.Fragmentdebe usarse en todas partes.


1

Si va a apuntar a API 11+, no necesitará la biblioteca de soporte [y su apk real será más pequeña, al menos).

Si desea admitir algo antes de Android 3.x, necesitará la biblioteca de soporte.

¿Es esto lo que estás preguntando?


9
necesita usar la biblioteca de soporte para usar ViewPager, que es lo que está preguntando
tyczj

@ Matt Gracias por su respuesta, pero estoy buscando la mejor solución que incorpore ViewPagerfuncionalidad y una explicación de por qué esa solución es la mejor.
jonstaff
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.