2012-03-24 20 views
6

Tengo cinco actividades/pantallas en las que me gustaría poder deslizarme, cada una tiene una función diferente pero están interrelacionadas, de ahí el concepto de interfaz de usuario para deslizar entre cada una.Android PagerView entre actividades

He encontrado muchas discusiones en torno a ViewPager y PagerAdapters, etc., pero parece que no se puede encontrar una en la que se cambian los controles entre las diferentes pantallas de actividad.

¿Esto es posible? ¿Podría alguien señalarme un ejemplo de proyecto de esto con el código fuente? ¿O mostrarme cómo adaptar un tutorial existente para hacer lo que deseo?

¡Muchas gracias, tengan una buena!

+0

No se puede apuntar hacia un ejemplo con actividades. Puedo proporcionar un ejemplo de código de una aplicación que usa Tabulaciones y Fragmentos de la Barra de acciones de Paquete de Compatibilidad con un ViewPager, si lo desea. Básicamente, cada pestaña es un fragmento, alojado en una actividad principal (sin embargo, mi aplicación sigue creciendo otras actividades para otras tareas). Pero tendrías que estar dispuesto a usar fragmentos, no actividades. ¿Interesado? – Davek804

Respuesta

26

No puede usar ViewPager para deslizar entre Activities. Necesita convertir cada uno de ustedes cinco Activities en Fragments, luego combinar todo en uno FragmentActivity con el Adapter que usa con ViewPager.

Here's a link que entra en detalle al convertir su actual Activities info Fragments.

Este es el Fragment topic en el sitio web de Desarrolladores de Android, tiene mucha información útil.

Here's another example (fuente completa) que se infla TextViews en cada página.

Aquí hay un ejemplo que he escrito arriba:

PagerAdapter:

public class PagerAdapter extends FragmentPagerAdapter { 

    private final List<Fragment> mFragments = new ArrayList<Fragment>(); 

    public PagerAdapter(FragmentManager manager) { 
     super(manager); 
    } 

    public void addFragment(Fragment fragment) { 
     mFragments.add(fragment); 
     notifyDataSetChanged(); 
    } 

    @Override 
    public int getCount() { 
     return mFragments.size(); 
    } 

    @Override 
    public Fragment getItem(int position) { 
     return mFragments.get(position); 
    } 
} 

Esto se debe llamar en onCreate de su FragmentActivity:

private void initPaging() { 

    FragmentOne fragmentOne = new FragmentOne(); 
    FragmentTwo fragmentTwo= new FragmentTwo(); 

    PagerAdapter pagerAdapter = new PagerAdapter(getSupportFragmentManager()); 
    pagerAdapter.addFragment(fragmentOne); 
    pagerAdapter.addFragment(fragmentTwo); 

    ViewPager viewPager = (ViewPager) findViewById(R.id.viewPager); 
    viewPager.setAdapter(pagerAdapter); 
} 

Esta es una ejemplo del diseño y ou'd utilizar para su FragmnetActivity:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" > 

<android.support.v4.view.ViewPager 
    android:id="@+id/viewPager" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" /> 

</LinearLayout> 

Para crear Fragment crear una nueva clase que se extiende Fragment. Los dos primeros métodos que desea override son onActivityCreated y onCreateView.

Así es como se puede hacer eso:

public class FragmentOne extends Fragment { 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 
    View view = inflater.inflate(THE_LAYOUT_FROM_YOUR_ORIGINAL_ACTIVITY, container, false); 
    return view; 
    } 
} 
+0

Encontrado esto a través de google; Sigo recibiendo un error al configurar el adaptador: "this.mPagerAdapter". "mPagerAdapter no se puede resolver o no es un campo". Este es el único error que tengo. mPagerAdapter funciona en el Adaptador de paginación.No tengo idea de cómo arreglarlo. Si elimino el "esto" Aparece una advertencia que indica que initialisePaging() no se usa localmente. Apreciar cualquier ayuda de aquellos que ven esto –

+0

Tengo una pregunta, Aneal, ¿Cómo puedo agregar un nuevo fragmento a este adaptador de FragmentOne? Porque tengo este fragmento "tipo de pantalla de inicio" y si hago clic en algo allí, entonces me lleva a otra pantalla, en este caso, otro fragmento y así sucesivamente ... ¿Cómo puedo lograr esto? – ely87

+0

getItem (int position) recibe una llamada dos veces y da así la excepción indexOutOfBound ... –

2

revisiones Para obtener mPageradapter

PagerAdapter pagerAdapter = new PagerAdapter(getSupportFragmentManager()); 
    pagerAdapter.addFragment(fragmentOne); 
    pagerAdapter.addFragment(fragmentEvents); 

    viewPager = (ViewPager) super.findViewById(R.id.pager); 
    viewPager.setAdapter(pagerAdapter); 
+0

doenst trabajo para mí tiene una excepción nullpointer! – JavaNullPointer

+0

getItem (int position) recibe una llamada dos veces y da así la excepción indexOutOfBound –

Cuestiones relacionadas