Sto usando un viewpager per visualizzare del testo su più pagine. Sto cercando di ottenere la vista corrente e seleziono una nuova pagina. Il motivo che voglio per ottenere la visualizzazione corrente è perché in base al numero di pagina sto cambiando alcune proprietà di alcuni componenti vista come TextView, immagine ecc Sto usando il codice qui sotto per lo stessonon è in grado di ottenere la vista corrente in Viewpager
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) {
currView = mPager.getChildAt(mPager.getCurrentItem());
myTextView = (TextView)currView.findViewById(R.id.myTextView);
loadBookmarkSetting(pageSelected);//do some changes in myTextView properties based on the page number }
mPager.setOnPageChangeListener(pageChangelistener);
Ora la problema che sto affrontando dopo aver scrollato 3 pagine e quando arrivo alla quarta pagina, ottengo eccezione nullpointer sulla riga "myTextView = (TextView) currView.findViewById (R.id.myTextView);". Questo è così perché currView è nullo. Qualche idea se sto facendo qualcosa di sbagliato qui. C'è un altro modo per catturare la vista corrente (pagina) in viewpager così come posso fare modifiche sulla vista in base al numero di pagina in cui mi trovo?
Penso che si dovrebbe eseguire il debug qui: 'mPager.getChildAt (mPager.getCurrentItem ()); 'Perché restituisce null? –
Utilizzare questa risposta per ottenere la vista corrente http://stackoverflow.com/a/8638772/527759 – httpdispatch
@ user527759: la sloution nel thread condiviso si applica all'adattatore del cercapersone. Sto comunque utilizzando FragmentStatePagerAdapter. Questo metodo restituirà un oggetto Fragment che non può essere lanciato per visualizzare quindi il codice suggerito non funzionerà – user1938357