Autore Topic: Problema sull'utilizzo dei fragment  (Letto 349 volte)

Offline rosario

  • Nuovo arrivato
  • *
  • Post: 21
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    Mac OS X
Problema sull'utilizzo dei fragment
« il: 07 Giugno 2014, 15:55:21 CEST »
0
Salve a tutti, ho provato a fare una piccola applicazione per capire come funzionassero i fragment.
Le classi che estendono da Fragment sono questi:

Codice: [Seleziona]
//per il primo fragment
public class Fragment_testo extends Fragment {

       
        @Override 
       
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
        Bundle savedInstanceState) { 
               
      View view = inflater.inflate(R.layout.fragment_testo, container, false); 
      return view; 
    } 
       
        public void mostra_citta(String citta)
        {
                TextView txt=(TextView)getView().findViewById(R.id.textView1);
                txt.setText(citta);
        }

       
}


Codice: [Seleziona]
//per il secondo fragment
public class Fragment_menu extends Fragment {
       
       
        private OnSelectionListener listener; 
       
        public interface OnSelectionListener 
    { 
        void choose(String cityName); 
    }     

        @Override
        public void onAttach(Activity activity) {
                // TODO Auto-generated method stub
                super.onAttach(activity);
                MainActivity main=(MainActivity) activity; 
        listener=main;
        }
       
        @Override
       
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                        Bundle savedInstanceState) {
                // TODO Auto-generated method stub
               
                View view = inflater.inflate(R.layout.fragment_menu, container, false);
               
                Button bottone_parigi=(Button)view.findViewById(R.id.button1);
                Button bottone_roma=(Button)view.findViewById(R.id.button2);
       
               
                bottone_parigi.setOnClickListener(new OnClickListener() {
                       
                        @Override
                        public void onClick(View v) {
                                // TODO Auto-generated method stub
                                manageClickEvent((Button) v);
                        }
                });
               
               
                bottone_roma.setOnClickListener(new OnClickListener() {
                       
                        @Override
                        public void onClick(View v) {
                                // TODO Auto-generated method stub
                                manageClickEvent((Button) v);
                        }
                });
               
           return view;
        }
       
       
        private void manageClickEvent(Button btn) 
    { 
       
        String tag=btn.getTag().toString();
        if (tag.compareTo("parigi")==0)
        {
                listener.choose("siamo a parigi"); 
        }
        if(tag.compareTo("roma")==0)
        {
                listener.choose("siamo a roma");
        }
       
       
    }     
       


}


Non soffermandomi su quello che l'applicazione fà, vorrei capire una cosa:
perchè nel secondo fragment se uso questa riga ...
Codice: [Seleziona]
Button bottone_parigi=(Button)getView().findViewById(R.id.button1);
mi dà una nullPointerException??
io ho scritto questa riga per analogia con questa altra riga che invece non mi dà alcun errore:
Codice: [Seleziona]
TextView txt=(TextView)getView().findViewById(R.id.textView1);


In parole povere,qualcuno mi potrebbe spiegare perchè se uso getView() sul bottone mi dà errore mentre se la uso su una TextView fila tutto liscio?Ho controllato la gerarchia e entrambi sono delle View, quindi dove sta il problema?

« Ultima modifica: 07 Giugno 2014, 15:59:59 CEST da rosario »