Ошибка: попытка вызвать виртуальный метод 'void android.widget.Spinner.setAdapter (android.widget.SpinnerAdapter)' для ссылки на пустой объект - PullRequest
0 голосов
/ 06 октября 2019

Я не нашел ошибку в инструкции: spIdEdificio.setAdapter (adapterEdificios);// указываем на нулевую ссылку на объект.

Пожалуйста, некоторые могут помочь мне с вращателем, я новичок в Android Studio. Я искал возможное решение в течение 2 дней и до сих пор не могу его исправить. Ссылка на макет xml верна. Я ценю любую помощь.

public class CrudOficinaActivity extends AppCompatActivity {

    DaoEdificios daoEdificios;
 ...   
    Spinner spIdEdificio;
    ArrayList<String> listItemEdificios = new ArrayList<>();
    ArrayAdapter<String> adapterEdificios;
   ...
    String codedificioedit="-";
        @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.layout_oficina);
        daoEdificios = new DaoEdificios( this);
        agregar=findViewById(R.id.btnAdd);

        listItemEdificios.add("Seleccione");
        CargarSpiEdificios();
        adapterEdificios =  new ArrayAdapter<String>(this,android.R.layout.simple_spinner_dropdown_item,listItemEdificios);
        adapterEdificios.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        ...   
        agregar.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                Context context;
                final Dialog dialog= new Dialog(CrudOficinaActivity.this);
                ...
                dialog.show();

                try {
                    spIdEdificio = findViewById(R.id.spIdEdificio_d);
                    spIdEdificio.setAdapter(adapterEdificios);
                    spIdEdificio.setSelection(0);
                }catch (Exception e){  }
                nombredit= dialog.findViewById(R.id.etNombreOficina_d);
                tituloform=dialog.findViewById(R.id.tvTitulo_d);
                guardar =  dialog.findViewById(R.id.d_agregar);
                cancelar = dialog.findViewById(R.id.d_cancelar);

                spIdEdificio.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
                    @Override
                    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {                          
               ...
                cancelar.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        dialog.dismiss();
                    }
                });
                Toast.makeText(CrudOficinaActivity.this,"Añadiendo registro: "+nombredit.getText(),Toast.LENGTH_SHORT).show();
            }
        });

    }

    private void CargarSpiEdificios() {
        ArrayList<Edificios> edi = daoEdificios.verTodos();

        if(edi.size()>0) {
            for (int i = 0; i < edi.size(); i++) {

                listItemEdificios.add(edi.get(i).getId() + "-" + edi.get(i).getCodigo() + "-" + edi.get(i).getNombreedificio());
            }
        }else{
            Toast.makeText(this,"No existen datos de edificio",Toast.LENGTH_LONG).show();
        }
    }
}
...