Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
setAdapter上的Android Spinner适配器null异常_Android_Exception_Null_Spinner_Adapter - Fatal编程技术网

setAdapter上的Android Spinner适配器null异常

setAdapter上的Android Spinner适配器null异常,android,exception,null,spinner,adapter,Android,Exception,Null,Spinner,Adapter,我是Android开发的新手,我在旋转器方面遇到了一些麻烦。 我的活动有两个微调器,我正在尝试在选择第一个微调器之后填充第二个微调器 第一个微调器的填充方法很好,第二个微调器的返回数组也很好,但是当我执行spin2.setAdapter(adapter)时,抛出一个NullPointerException 我放置了一个Toast.show(),以查看在第二个微调器上为我提供值的方法是否有效,它是否有效。就在我移除setAdapter()时,应用程序没有崩溃。但是,第二个微调器也是空的 我将代码放

我是Android开发的新手,我在旋转器方面遇到了一些麻烦。 我的活动有两个微调器,我正在尝试在选择第一个微调器之后填充第二个微调器

第一个微调器的填充方法很好,第二个微调器的返回数组也很好,但是当我执行
spin2.setAdapter(adapter)
时,抛出一个
NullPointerException

我放置了一个
Toast.show()
,以查看在第二个
微调器上为我提供值的方法是否有效,它是否有效。就在我移除
setAdapter()
时,应用程序没有崩溃。但是,第二个
微调器也是空的

我将代码放在片段中,以查看我做错了什么:

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

            }
        });
    }
}
公共静态类占位符片段扩展片段{
公共占位符片段(){
}
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
视图根视图=充气机。充气(R.layout.fragment\u info\u de\u lineas,
货柜(虚假);;
返回rootView;
}
@凌驾
已创建ActivityState上的公共无效(Bundle savedInstanceState){
super.onActivityCreated(savedInstanceState);
微调器自旋=(微调器)getActivity().findViewById(R.id.spEmpresa);
AccesoADatos db=新的AccesoADatos(getActivity().getApplicationContext());
SQLiteDatabase=db.getWritableDatabase();
ArrayAdapter=新的ArrayAdapter(getActivity(),android.R.layout.simple\u微调器\u项);
setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项);
Cursor Cursor=db.getAllEmpresas();
if(cursor.moveToFirst()){
做{
adapter.add(cursor.getString(1));
}while(cursor.moveToNext());
}
spin.setAdapter(适配器);
微调器spin2=(微调器)getActivity().findViewById(R.id.spEmpresa);
spin2.setOnItemSelectedListener(新的OnItemSelectedListener(){
@凌驾
已选择公共位置(AdapterView父视图、视图v、内部位置、,
长id){
微调器spinLineas=(微调器)parent.findViewById(R.id.spLinea);
微调器spinEmpresa=(微调器)parent.findViewById(R.id.spEmpresa);
ArrayAdapter adapter2=新的ArrayAdapter(parent.getContext(),android.R.layout.simple\u微调器\u项);
// 
adapter2.setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项);
int posicion=spinEmpresa.getSelectedItemPosition();
int idpos=(int)spinEmpresa.getItemIdAtPosition(posicion);
AccesoADatos db=新的AccesoADatos(parent.getContext());
SQLiteDatabase=db.getWritableDatabase();
游标游标2=db.getAllLineas(idpos);
if(cursor2.moveToFirst()){
做{
adapter2.add(cursor2.getString(1));
Toast.makeText(parent.getContext(),“Linea”+cursor2.getString(1),Toast.LENGTH_LONG.show();
}while(cursor2.moveToNext());
}
spinLineas.setAdapter(适配器2);
}
@凌驾
未选择公共无效(AdapterView arg0){
//TODO自动生成的方法存根
}
});
}
}
更换:

Spinner spin = (Spinner)getActivity().findViewById(R.id.spEmpresa);
与:


同样适用于spin2…

非常感谢!但仅仅更换这两条线路是行不通的。所以我把所有的“parent”都改为“getActivity()”,这样效果会很好。再次感谢!!
Spinner spin = (Spinner)getView().findViewById(R.id.spEmpresa);