Diferencia entre android.app.Fragment y android.support.v4.app.Fragment

¿Cuál es la diferencia entre android.app.Fragment y android.support.v4.app.Fragment , y cuáles son las circunstancias en las que se deben usar?

android.support.v4.app.Fragment es la clase Fragment de la biblioteca de soporte android, que es un paquete de compatibilidad que le permite usar algunas de las funciones más nuevas de Android en versiones anteriores de Android.

android.app.Fragment es la clase Fragment en la versión nativa del SDK de Android. Fue introducido en Android 3 (API 11).

Si desea hacer que su aplicación use fragmentos, y desea apuntar a los dispositivos antes de API 11, debe usar android.support.v4.app.Fragment . Sin embargo, si solo está orientando dispositivos que ejecutan API 11 o superior, puede usar android.app.Fragment .

Editar: el fragmento android.app.Fragment -SO contenido en el sistema operativo ahora está en desuso (a partir del nivel API 28), y todos deberían pasar a utilizar las implementaciones de la biblioteca de soporte.

A partir de 2018:

De la documentación android.app.Fragment :

Esta clase quedó obsoleta en el nivel 28 de la API.
Use el Fragment biblioteca de soporte para un comportamiento consistente en todos los dispositivos y acceso a Lifecycle.

Así que los fragmentos de soporte ( android.support.v4.app.Fragment ) deberían usarse en todas partes en lugar de los fragmentos nativos ( android.app.Fragment ) ahora.

Yo uso android.support.v4.app.Fragment exclusivamente.

Todas las aplicaciones que escribo deben ser compatibles con Android 2.3 y esta es la forma más sencilla de hacerlo.

Si está soportando 11+, entonces adhiera a android.app.Fragment .

Si su aplicación está dirigida para API 11 o superior, puede usar android.app.Fragment y su archivo APK será más pequeño.

De lo contrario, agregue la biblioteca android.support.v4.app.Fragment a su proyecto para admitir versiones anteriores de la API de Android (Android 3.x).

android.support.v4.app.Fragment es una biblioteca que puede usar para obtener compatibilidad con versiones anteriores para versiones anteriores de API.

Se agregaron fragmentos en el nivel 11 de la API (junto con otras características) debe incluir esa biblioteca para extender esa función a los dispositivos anteriores a la API 11. Esa es una biblioteca útil y sugiero echarle un vistazo a ActionBarSherlock, que amplía la barra de acción a los dispositivos pre-API v11.

Si su aplicación está orientada para API 11 o superior, puede usar android.app.Fragment y reducirá el tamaño del APK. De lo contrario, use android.support.v4.app.Fragment