2014-01-09 5 views
1

У меня есть код для загрузки spinner с классом extends Activity. Это успешно работает. Это код ...Ошибка загрузки spinner в фрагменте

package nielpoenya.blogspot.com; 

import.... 

public class MySQLite extends Activity implements OnItemSelectedListener { 
    Spinner spinner; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     spinner = (Spinner) findViewById(R.id.spinner); 
     spinner.setOnItemSelectedListener(this); 

     loadSpinnerData(); 

    } 

    /** 
    * Function to load the spinner data from SQLite database 
    * */ 
    private void loadSpinnerData() { 
     // database handler 
     DatabaseHandler db = new DatabaseHandler(getApplicationContext()); 

     // Spinner Drop down elements 
     List<String> lables = db.getAllLabels(); 

     // Creating adapter for spinner 
     ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this, 
       android.R.layout.simple_spinner_item, lables); 

     // Drop down layout style - list view with radio button 
     dataAdapter 
       .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 

     // attaching data adapter to spinner 
     spinner.setAdapter(dataAdapter); 
    } 

    @Override 
    public void onItemSelected..... 

Теперь я хочу попробовать в классе с простирается Fragment, но сделать это перестать работать ..

package com.tugasbesar.medantrain; 

import.... 

public class InfoJadwal extends Fragment implements OnItemSelectedListener { 

    Spinner spinner; 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 

     View rootView = inflater.inflate(R.layout.info_jadwal, container, false); 

     spinner = (Spinner) getActivity().findViewById(R.id.spin_tujuan); 
     spinner.setOnItemSelectedListener(this); 

     loadSpinnerData(); 

     return rootView; 
    } 

    private void loadSpinnerData() { 
     // database handler 
     DatabaseHandler db = new DatabaseHandler(this.getActivity()); 

     // Spinner Drop down elements 
     List<String> lables = db.getAllLabels(); 

     // Creating adapter for spinner 
     ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(
       this.getActivity(), android.R.layout.simple_spinner_item, 
       lables); 

     // Drop down layout style - list view with radio button 
     dataAdapter 
       .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 

     // attaching data adapter to spinner 
     spinner.setAdapter(dataAdapter); 
    } 

    @Override 
    public void onItemSelected.... 

Что не хватает с моим классом фрагмента? Благодаря

ответ

2

Ошибка в вашем onCreateView, вам нужно заменить:

spinner = (Spinner) getActivity().findViewById(R.id.spin_tujuan); 

по:

spinner = (Spinner) rootView.findViewById(R.id.spin_tujuan); 

, потому что с getActivity().findViewById() он будет пытаться искать вид в contentview из ваших Activity, не в вашем Fragment.

Смежные вопросы