Crear un proyecto en Android Studio de la manera habitual.

swipe01

Selecciona el tipo de Activity en blanco (Blank Activity).

swipe02

Elige como tipo de navegación (Navigation Type) la opción Action Bar Tabs. Para que sea más cómodo el nombre del Fragment puedes llamarlo fragment1.

swipe03

Simpemente con estas acciones, el asistente de Android Studio genera una aplicación con 3 pestañas, aunque en realidad corresponden a un único Fragment con un TextView al que se le cambia el contenido en función del número de pestaña seleccionada.

Como puedes comprobar, puedes navegar entre las distintas pantallas seleccionando la deseada pulsando cualquiera de las pestañas o bien arrastrando las pantallas hacia los lados.

swipe04a swipe04b swipe04c

Modifica el contenido del Fragment que se ha creado automáticamente (fragment1), eliminando el TextView y colocando los elementos que desees que formen parte de esta pantalla.

swipe05

En este ejemplo se va a indicar un único texto indicando en qué pantalla nos encontramos.

swipe05b

Crea las siguientes pantallas como Fragments dentro de la carpeta layout, haciendo clic derecho sobre dicha carpeta y seleccionando la opción New > Layout resource file.

swipe06

Indica el nombre que desees (por ejemplo, fragment2) y el tipo de elemento raíz del layout.

swipe07

Añade el contenido que desees.

swipe08

Crea todos los layouts que desees. En este ejemplo se crearán 4.

swipe09

Ahora es el momento de realizar una serie de modificaciones en la clase Java para que cargue los diferentes Fragments que se han creado.

Modifica el método onCreateView() que puedes encontrar en la parte final, escribiendo un contenido similar al siguiente, donde puedes ver que se debe indicar en cada caso el nombre de los layouts correspondientes a cada pantalla.

{code}

public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    View rootView = null;
    switch (getArguments().getInt(ARG_SECTION_NUMBER)) {
        case 1:
            rootView = (View) inflater.inflate(R.layout.fragment1, container, false);
            break;
        case 2:
            rootView = (View) inflater.inflate(R.layout.fragment2, container, false);
            break;
        case 3:
            rootView = (View) inflater.inflate(R.layout.fragment3, container, false);
            break;
        case 4:
            rootView = (View) inflater.inflate(R.layout.fragment4, container, false);
            break;
    }
    return rootView;
}

{/code}

Por otro lado, verás que existe un método getCount() que retorna el número de pestaña que se tendrán. En el modelo generado aparece 3, y deberán indicar el número correcto de pestañas que tendrá la aplicación.

{code class="highlight:[2]"}

public int getCount() {
    return 4;
}

{/code}

En el método getPageTitle() se indican los títulos que se mostrarán en cada pestaña, por lo que tendrás que modificarlo si hay un número diferente de pestañas, o si quieres indicar otros títulos.

{code class="highlight:[10,11]"}

public CharSequence getPageTitle(int position) {
    Locale l = Locale.getDefault();
    switch (position) {
        case 0:
            return getString(R.string.title_section1);
        case 1:
            return getString(R.string.title_section2);
        case 2:
            return getString(R.string.title_section3);
        case 3:
            return getString(R.string.title_section4);
    }
    return null;
}

{/code}

Si ejecutas la aplicación verás todas las pestañas que has creado, que seguirán siendo seleccionables pulsando sobre ellas, o desplazando las pantallas hacia los laterales.

swipe10

Como se puede leer en los comentarios que añade el asistente en la parte inicial del código, la plantilla usa la clase FragmentPagerAdapter que carga todos los Fragments en memoria, lo que permite una ejecución más rápida, pero hace un mayor uso de la memoria.

{code}

public class SectionsPagerAdapter extends FragmentPagerAdapter

{/code}

 

Si resulta una carga excesiva de la memoria se debe cambiar por la clase FragmentStatePagerAdapter.

{code}

public class SectionsPagerAdapter extends FragmentStatePagerAdapter

{/code}