我是Android开发新手,我在使用spinner时遇到了一些麻烦。我的活动有2个旋转器,我试图在第一个选择后填充第二个。
第一个Spinner的填充方法工作得很好,第二个Spinner的返回数组也工作得很好,但是当我执行spin2.setAdapter(adapter)
时,抛出了NullPointerException
。
我放了一个Toast.show()
,看看给我第二个spinner
值的方法是否有效,它确实有效。当我删除setAdapter()
时,应用程序不会崩溃。但是,第二个spinner
也是空的。
我把我的代码片段看看我做错了什么:
public static class PlaceholderFragment extends Fragment {
public PlaceholderFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_info_de_lineas,
container, false);
return rootView;
}
@Override
public void onActivityCreated(Bundle savedInstanceState){
super.onActivityCreated(savedInstanceState);
Spinner spin = (Spinner)getActivity().findViewById(R.id.spEmpresa);
AccesoADatos db = new AccesoADatos(getActivity().getApplicationContext());
SQLiteDatabase database = db.getWritableDatabase();
ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
Cursor cursor = db.getAllEmpresas();
if(cursor.moveToFirst()){
do{
adapter.add(cursor.getString(1));
} while(cursor.moveToNext());
}
spin.setAdapter(adapter);
Spinner spin2 = (Spinner)getActivity().findViewById(R.id.spEmpresa);
spin2.setOnItemSelectedListener(new OnItemSelectedListener(){
@Override
public void onItemSelected(AdapterView<?> parent, View v, int pos,
long id) {
Spinner spinLineas = (Spinner)parent.findViewById(R.id.spLinea);
Spinner spinEmpresa = (Spinner)parent.findViewById(R.id.spEmpresa);
ArrayAdapter<String> adapter2 = new ArrayAdapter<String>(parent.getContext(),android.R.layout.simple_spinner_item);
//
adapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
int posicion = spinEmpresa.getSelectedItemPosition();
int idpos = (int) spinEmpresa.getItemIdAtPosition(posicion);
AccesoADatos db = new AccesoADatos(parent.getContext());
SQLiteDatabase database = db.getWritableDatabase();
Cursor cursor2 = db.getAllLineas(idpos);
if(cursor2.moveToFirst()){
do{
adapter2.add(cursor2.getString(1));
Toast.makeText(parent.getContext(), "Linea "+ cursor2.getString(1), Toast.LENGTH_LONG).show();
} while(cursor2.moveToNext());
}
spinLineas.setAdapter(adapter2);
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
});
}
}
Replace:
Spinner spin = (Spinner)getActivity().findViewById(R.id.spEmpresa);
:
Spinner spin = (Spinner)getView().findViewById(R.id.spEmpresa);