Android Spinner Adapter在setAdapter上出现null异常



我是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);

最新更新