Android Uso básico de ViewPager con fragmentos.


Ejemplo

Un ViewPager permite mostrar múltiples fragmentos en una actividad que se puede navegar girando hacia la izquierda o hacia la derecha. Un ViewPager debe ser alimentado de Vistas o Fragmentos usando un PagerAdapter .

Sin embargo, existen otras dos implementaciones específicas que le resultarán más útiles en caso de utilizar Fragments que son FragmentPagerAdapter y FragmentStatePagerAdapter . Cuando se debe crear una instancia de un Fragmento por primera vez, se getItem(position) para cada posición que se necesite instanciar. El método getCount() devolverá el número total de páginas para que ViewPager sepa cuántos Fragmentos deben mostrarse.

Tanto FragmentPagerAdapter como FragmentStatePagerAdapter mantienen un caché de los fragmentos que el ViewPager deberá mostrar. Por defecto, el ViewPager intentará almacenar un máximo de 3 Fragmentos que corresponden al Fragmento actualmente visible, y los que están al lado de la derecha y la izquierda. Además, FragmentStatePagerAdapter mantendrá el estado de cada uno de sus fragmentos.

Tenga en cuenta que ambas implementaciones asumen que sus fragmentos mantendrán sus posiciones, por lo que si mantiene una lista de los fragmentos en lugar de tener un número estático de ellos, como puede ver en el método getItem() , deberá crear una subclase de PagerAdapter y anular al menos los métodos instantiateItem() , destroyItem() y getItemPosition() .

Solo agregue un ViewPager en su diseño como se describe en el ejemplo básico :

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout> 
    <android.support.v4.view.ViewPager
        android:id="@+id/vpPager"> 
    </android.support.v4.view.ViewPager>
</LinearLayout>

Luego, defina el adaptador que determinará cuántas páginas existen y qué fragmento mostrar para cada página del adaptador.

public class MyViewPagerActivity extends AppCompatActivity {
    private static final String TAG = MyViewPagerActivity.class.getName();

    private MyPagerAdapter mFragmentAdapter;
    private ViewPager mViewPager;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);    
        setContentView(R.layout.myActivityLayout);

        //Apply the Adapter
        mFragmentAdapter = new MyPagerAdapter(getSupportFragmentManager());    
        mViewPager = (ViewPager) findViewById(R.id.view_pager);
        mViewPager.setAdapter(mFragmentAdapter);
    }

    private class MyPagerAdapter extends FragmentPagerAdapter{

        public MyPagerAdapter(FragmentManager supportFragmentManager) {
            super(supportFragmentManager);
        }

        // Returns the fragment to display for that page
        @Override
        public Fragment getItem(int position) {
            switch(position) {
                case 0:
                    return new Fragment1();

                case 1:
                    return new Fragment2();

                case 2:
                    return new Fragment3();

                default:
                    return null;
            }
        }

        // Returns total number of pages    
        @Override
        public int getCount() {
            return 3;
        }

    }
}
3.2.x

Si está utilizando android.app.Fragment , debe agregar esta dependencia:

compile 'com.android.support:support-v13:25.3.1'

Si está utilizando android.support.v4.app.Fragment , debe agregar esta dependencia:

compile 'com.android.support:support-fragment:25.3.1'