CERCA
PER MODELLO
FullScreen Chatbox! :)

Utente del giorno: 9mm con ben 1 Thanks ricevuti nelle ultime 24 ore
Utente della settimana: 9mm con ben 7 Thanks ricevuti negli ultimi sette giorni
Utente del mese: 9mm con ben 31 Thanks ricevuti nell'ultimo mese

Visualizzazione dei risultati da 1 a 1 su 1
Discussione:

Problema con FragmentStatePagerAdapter

Se questa discussione ti è stata utile, ti preghiamo di lasciare un messaggio di feedback in modo che possa essere preziosa in futuro anche per altri utenti come te!
  1. #1
    Baby Droid


    Registrato dal
    Aug 2012
    Messaggi
    22
    Smartphone
    Samsung Galaxy S3

    Ringraziamenti
    1
    Ringraziato 0 volte in 0 Posts
    Predefinito

    Problema con FragmentStatePagerAdapter

    Salve a tutti, sto cercando di implementare un FragmentStatePagerAdapter, in cui ogni scheda ci dev'essere un layout diverso. Ora, tramite l'override di getItem sono riuscito a mostrare un layout diverso per ogni schermata, ma appena cerco di istanziare gli elementi del layout l'app va in crash per una NullPointerException. Inizialmente istanziavo i diversi elementi nell'onPageSelected del SimpleOnPageChangeListener, ma poi ho capito che questo veniva eseguito prima del codice in cui cambiavo layout. Allora ho provato ad agire direttamente dal Fragment rappresentante la scheda o a fare l'override di finishUpdate. Con entrambi i metodi riesco a istanziare un elemento (una TextView, come prova) e a cambiarne il testo. Sfortunatamente questo non funziona se prevedo la possibilità di diversi layout. Mi spiego. Nella classe che estende FragmentStatePagerAdapter ho creato un array di interi in cui ogni elemento è un riferimento al layout. In getItem creo il Fragment della scheda, passandogli il riferimento al layout desiderato. Se passo una posizione fissa (e quindi ogni scheda ha lo stesso layout) tutto funziona più o meno bene, altrimenti mi da una NullPointerException. Come posso fare per riuscire ad istanziare elementi diversi di layout diversi? Conviene che faccia una classe separata per ogni Fragment, e quindi per ogni scheda, oppure un layout unico in cui nascondo gli elementi che non mi servono quando cambio scheda? Ci sono altre soluzioni? Vi posto il codice della classe che estende FragmentStatePagerAdapter e di quella che estende il Fragment per la scheda.

    codice:
    public class CollezionePagerAdapter extends FragmentStatePagerAdapter {
    
        private int lungArray;
        private String[] arrayS;
        private int[] arrayIdLayout;
        private Activity act;
    
        public CollezionePagerAdapter(FragmentManager fm,Activity a){
            super(fm);
            act=a;
           
            arrayIdLayout=new int[]{R.layout.layout_1,R.layout.layout_2,R.layout.layout_3,R.layout.layout_4};
            arrayS=act.getResources().getStringArray(R.array.array_titoli);
            lungArray=arrayS.length;
        }//CollezionePagerAdapter
    
        @Override
        public Fragment getItem(int pos){
            Fragment f=new PannelloScheda(arrayIdLayout[pos]);
            return f;
        }//getItem
    
        @Override
        public int getCount(){
            return lungArray;
        }//getCount
    
        @Override
        public String getPageTitle(int pos){
            return arrayS[pos];
        }//getPageTitle
    
        @Override
        public void finishUpdate(ViewGroup vg){
            super.finishUpdate(vg);
            
            //chiamata al metodo per istanziare gli oggetti
        }//finishUpdate
    }//CollezionePagerAdapter
    codice:
    public class PannelloScheda extends Fragment {
    
        private int layout;
    
        public PannelloScheda(int l){
            layout=l;
        }//PannelloScheda
    
        @Override
        public View onCreateView(LayoutInflater inflater,ViewGroup container, Bundle stato) {
            View vPrinc = inflater.inflate(layout, container, false);
    
            //chiamata al metodo per istanziare gli oggetti
    
            return vPrinc;
        }//onCreateView
    }//PannelloScheda

  2.  

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire risposte
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Torna su
Privacy Policy