X

Crear un Fragment (Fragmento)

Puedes ver a un fragment como una sección modular de una actividad, el cual tiene su propio ciclo de vida, recibe sus propios eventos de entrada, y que puedes añadir o eliminar mientras la actividad se está ejecutando (algo así como una “sub-actividad” que puedes reutilizar dentro de diferentes actividades). Esta lección te muestra cómo extender la clase Fragment utilizando la Support Library para que tus versiones se mantengan compatibles con dispositivos que ejecuten versiones superiores a Android 1.6.

Nota: Si decides que el API mínimo de tu app requiere 11 o más, no necesitas utilizar la Support Library y puedes en su lugar utilizar la clase Fragment y las APIs relacionadas que se encuentra en la estructura de la plataforma por defecto para dichas versiones. Ten en cuenta que esta lección se enfoca en las APIs de la Support Library, las cuales utilizan una firma de paquete específica y algunas veces nombres de la API ligeramente diferentes que las versiones incluidas por defecto en la plataforma.

Figura 1 Fragments en la app Gmail de Google,

Antes de comenzar esta lección, debes configurar tu proyecto Android para que utilice la Support Library. Si no la has utilizado antes, configura tu proyecto para que utilice la librería v4 siguiendo los pasos de la página Configurar la Support Library. Por otro lado, puedes también incluir la action bar en tus actividades utilizando la librería v7 appcompat la cual es compatible con Android 2.1 (API nivel 7) y también incluye las APIs Fragment.

Crear una Clase Fragment

Para crear un fragmento, extiende la clase Fragment, y sobreescribe los métodos del ciclo de vida claves para insertar la lógica de tu app, de forma similar a como lo harías con la clase Activity.

La diferencia es que al crear un Fragment tu debes utilizar la llamada onCreateView() para definir el layout. De hecho, esta es la única llamada que necesitas para conseguir que se ejecute el fragmento. Por ejemplo, aquí puedes ver un fragmento simple que especifica su propio layout:

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.ViewGroup;

public class ArticleFragment extends Fragment {
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        return inflater.inflate(R.layout.article_view, container, false);
    }
}

Como si se tratase de una actividad, un fragmento debería implementar los métodos del ciclo de vida que te permiten gestionar su estado en función de si es añadido o eliminado de la actividad en la que se encuentre, además de las transiciones de la actividad entre los diferentes estados del ciclo de vida. Por ejemplo, cuando el método onPause() de la actividad es llamado, cualquier fragmento en la actividad también llama a onPause().

Para más información sobre el ciclo de vida de un fragmento y los métodos, visita la guía del desarrollador sobre Fragments.

Añadir un Fragment a una Actividad utilizando XML

Mientras que los fragmentos son reutilizables, componentes de la UI modulares, cada instancia de una clase Fragment debe asociarse con un padre FraggmentActivity. Puedes hacer esta asociación definiendo cada fragmento dentro del archivo XML que es el layout de tu actividad.

Nota: FragmentActivity es una actividad especial proporcionada en la Support Library para manipular los fragmentos en versiones del sistema inferiores a un nivel API 11. Si no utilizas la Support Library puedes utilizar una Activity normal.

Aquí puedes ver un ejemplo de un archivo layout que incluye dos fragmentos para que en una actividad que se utilice en una pantalla considerada “grande (large)” (especificada mediante el calificador large en el nombre del directorio).

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

    <fragment android:name="com.example.android.fragments.HeadlinesFragment"
              android:id="@+id/headlines_fragment"
              android:layout_weight="1"
              android:layout_width="0dp"
              android:layout_height="match_parent" />

    <fragment android:name="com.example.android.fragments.ArticleFragment"
              android:id="@+id/article_fragment"
              android:layout_weight="2"
              android:layout_width="0dp"
              android:layout_height="match_parent" />

</LinearLayout>

Consejo: Para más información sobre crear layouts para diferentes tamaños de pantalla, visita Soporte de Diferentes Tamaños de Pantalla.

Ahora aplica el layout a tu actividad:

import android.os.Bundle;
import android.support.v4.app.FragmentActivity;

public class MainActivity extends FragmentActivity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.news_articles);
    }
}

Si estás utilizando la v7 appcompat library, tu actividad debería en su lugar extender AppCompatActivity, la cual es una subclase de FragmentActivity (para más información, visita Añadir la Action Bar).

Nota: Cuando añades un fragmento a un layout de una actividad definiendo el fragmento en el archivo XML del layout, no puedes eliminar el fragmento en tiempo de ejecución. Si planeas intercambiar entre tus fragmentos durante la interacción del usuario, debes añadir el fragmento a la actividad cuando esta se inicia por primera vez, como se muestra en la próxima lección.

Puedes ver más información sobre Crear un Fragment (Fragmento) en la página oficial de Google en inglés pulsando aquí.

Los comentarios de Disqus están cargando....