2012-03-24 13 views
6

Ho cinque attività/schermate che mi piacerebbe essere in grado di scorrere, ognuna ha una funzione diversa ma sono interconnesse da qui il concetto di interfaccia utente di scorrimento tra ciascuna.Android PagerView tra le attività

Ho trovato molte discussioni su ViewPager e PagerAdapters, ecc. Ma non riesco a trovarne uno in cui passare lo scambio tra le diverse schermate di attività.

È possibile? Qualcuno potrebbe indicarmi un esempio di questo progetto con il codice sorgente? Oppure mostrami come adattare un tutorial esistente per fare ciò che desidero?

Grazie mille, buona!

+0

Non si può puntare verso un esempio con le attività. Posso fornire un esempio di codice di un'applicazione che utilizza le schede e i frammenti della barra delle azioni di Compatibility Pack con un ViewPager, se lo desideri. Fondamentalmente, ogni scheda è un frammento, ospitato in un'attività principale (la mia app sta crescendo costantemente altre attività per altri compiti, però). Ma dovresti essere disposto a usare frammenti, non attività. Interessato? – Davek804

risposta

26

Non è possibile utilizzare ViewPager per scorrere tra Activities. È necessario convertire ognuno di voi cinque Activities in Fragments, quindi combinare tutto in uno FragmentActivity con lo Adapter utilizzato con ViewPager.

Here's a link che entra in dettaglio sulla conversione delle informazioni correnti Fragments.

Questo è il numero Fragment topic sul sito Web degli sviluppatori Android, contiene molte informazioni utili.

Here's another example (sorgente completo) che si gonfia TextViews in ogni pagina.

Ecco un esempio che ho digitato su:

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); 
    } 
} 

Questo dovrebbe essere chiamato in onCreate della vostra 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); 
} 

Questo è un esempio del layout y ou'd usare per il vostro 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> 

Per creare Fragment creare una nuova classe che estende Fragment. I primi due metodi che vorrete digitare override sono onActivityCreated e onCreateView.

Ecco come si potrebbe fare che:

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

Trovato tramite Google; Continuo a ricevere un errore durante l'impostazione dell'adattatore: "this.mPagerAdapter". "mPagerAdapter non può essere risolto o non è un campo". Questo è l'unico errore che ho. mPagerAdapter funziona nel PagerAdapter.Non ho idea di come aggiustarlo. Se rimuovo il "questo". Viene visualizzato un avviso che l'initialisePaging() non viene utilizzato localmente. Apprezzo l'aiuto di coloro che vedono questo –

+0

Ho una domanda, Aneal, Come posso aggiungere un nuovo frammento a questo adattatore da FragmentOne? Perché ho questo frammento "una sorta di schermata principale" e se clicco qualcosa lì, poi mi porta ad altro schermo, in questo caso, un altro frammento e così via ... Come posso ottenere questo? – ely87

+0

getItem (int position) viene richiamato due volte e quindi fornisce l'eccezione indexOutOfBound ... –

2

correzioni Per mPageradapter

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

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

doenst work for me ha ottenuto un'eccezione nullpointer! – JavaNullPointer

+0

getItem (int position) viene chiamato due volte e quindi fornisce l'eccezione indexOutOfBound –

Problemi correlati