2013-05-04 21 views
6

Ho bisogno di aiuto per il mio problema di aggiornamento delle pagine durante l'utilizzo di viewpager. Sto usando un semplice viewpager con FragmentStatePagerAdapter. Tutto quello che voglio fare è ottenere l'accesso al frammento/vista corrente così come posso aggiornare alcune visualizzazioni testuali nel mio frammento/vista. Ho cercato in giro nel forum e sono venuto a sapere alcune cose - Uno dei modi per gestire questo è l'impostazione di tag in instantiateItem() richiamare la scheda e recuperare la vista di findViewbyTag. Non sono riuscito a capire come implementarlo e non sono nemmeno sicuro che funzioni per FragmentStatePagerAdapter. - Ho esplorato altre opzioni come suggerito in vari forum, ma non posso farle funzionare.Aggiornamento di frammenti/viste in viewpager con fragmentStatePagerAdapter

Il mio codice è molto simile a quello di un android http://developer.android.com/training/animation/screen-slide.html. I componenti di base sono gli stessi (Fragment activity xml con alcuni componenti di visualizzazione tra cui textview, viewpager xml con solo un visualizzatore di pagine, una classe Fragment e la classe FragmentActivity principale). nella mia classe FragmentActivity ho aggiunto una paginaChangelistener al mio viewpager così come posso fare le mie modifiche di textview durante onPageSelected().

Qualsiasi aiuto è apprezzato.

Aggiunta del codice per riferimento.

Public class myActivity extends FragmentActivity 
    //Variable declarations 
    protected void onCreate(Bundle savedInstanceState) { 
    ViewPager mPager = (ViewPager) findViewById(R.id.pager); 
    mPagerAdapter = new ScreenSlidePagerAdapter(getSupportFragmentManager()); 
    mPager.setAdapter(mPagerAdapter); 
    View CurrView; 

    OnPageChangeListener pageChangelistener = new OnPageChangeListener() { 
    @Override 
    public void onPageSelected(int pageSelected) { 
     doTextViewChnges();//access the text view and update it based on pageSelected 

    ---THIS IS WHERE I AM STUCK IN TRYING TO GET THE TEXTVIEW IN MY CURRENT FRAGMWNT/VIEW------- 
    } 

    mPager.setOnPageChangeListener(pageChangelistener); 
} 
    private class ScreenSlidePagerAdapter extends FragmentStatePagerAdapter { 
    public ScreenSlidePagerAdapter(android.support.v4.app.FragmentManager fm) { 
     super(fm); 
    } 

    @Override 
    public android.support.v4.app.Fragment getItem(int position) { 
     return ScreenSlidePageFragment.create(position, <other parameters I want to pass>); 
    } 

    @Override 
    public int getCount() { 
     return NUM_PAGES; 
    } 
} 

risposta

-1

Presumo che si desidera accedere ai frammenti dalla vostra attività e aggiornare i views.Fragments sono parti di attività e il loro parere si può accedere da loro. I frammenti vengono creati dinamicamente nei viewadapter e non esiste un modo semplice e diretto per taggarli. Si può semplicemente accede a un frammento dal suo indice di number.first uno è 0 secondi uno è 1 e così via ...

//access your fragment(in your case your first fragment) 
//this part should be inside your doTextViewChnges() 
Fragment fragment = (Fragment) adapterViewPager 
      .getFragment(0); 
    if (fragment != null) { 
//call a public method inside your fragment to update your text view 
     fragment .updateYourTextView(); 
    } 

Edit: dentro il frammento creare il seguente metodo e aggiornare il vostro TextView da lì.

void updateYourTextView() { 
    yourTextView.setText("yourtext"); 

} 
+0

Non riuscivo a capire come hai ottenuto l'oggetto Frammento nella prima linea. Di seguito è riportato il codice all'interno della classe di attività Fragment in cui creo l'adattatore – user1938357

+0

Ho aggiornato la mia domanda per aggiungere il codice. – user1938357

+0

@ user1938357 quanti frammenti hai? Puoi sostituire FragmentTwo con qualunque sia il nome del tuo frammento. Quando hai un riferimento al tuo frammento, puoi aggiornare la sua vista. –

2

nel OnPageChangeListener:

 OnPageChangeListener pageChangelistener = new OnPageChangeListener() { 
      @Override 
      public void onPageSelected(int pageSelected) { 
ScreenSlidePageFragment currentFragment = (ScreenSlidePageFragment) mPagerAdapter.getItem(pageSelected) 
       doTextViewChnges();//access the text view and update it based on pageSelected 

      ---THIS IS WHERE I AM STUCK IN TRYING TO GET THE TEXTVIEW IN MY CURRENT FRAGMWNT/VIEW------- 
      } 
Problemi correlati