-1

Estoy intentando crear un spinner en un menu
Me da error al crear el adapter en el spinner.setAdapter(adapter);
Este es el error que me da

java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Spinner.setAdapter(android.widget.SpinnerAdapter)' on a null object reference

   @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.menu, menu);

        MenuItem ite = menu.findItem(R.id.dibujos);
        Spinner spinner = (Spinner) ite.getActionView();


        SimpleImageArrayAdapter adapter = new SimpleImageArrayAdapter(this, ArrayMinas);

        spinner.setAdapter(adapter);
        spinner.setOnItemClickListener((AdapterView.OnItemClickListener) this);


        return true;

    }
 public class SimpleImageArrayAdapter extends ArrayAdapter<Integer> {
        private Integer[] ArrayMinas;

        public SimpleImageArrayAdapter(Context context, Integer[] arrayMinas) {
            super(context, android.R.layout.simple_spinner_item);
            ArrayMinas = arrayMinas;
        }

        @Override
        public View getDropDownView(int position, View convertView, ViewGroup parent) {
            return getImageForPosition(position);
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            return getImageForPosition(position);
        }

        private View getImageForPosition(int position) {
            ImageView imageView = new ImageView(getContext());
            imageView.setBackgroundResource(ArrayMinas[position]);
            imageView.setLayoutParams(new AbsListView.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
            return imageView;
        }
    }
}

  • ¿Responde esto a tu pregunta? [¿Cuál es la solución a todos los errores NullPointerException presentes, pasados y futuros?](https://es.stackoverflow.com/questions/42977/cu%c3%a1l-es-la-soluci%c3%b3n-a-todos-los-errores-nullpointerexception-presentes-pasados) – BetaM Dec 12 '19 at 02:20

2 Answers2

1

Hola tu problema esta en:

Spinner spinner = (Spinner) ite.getActionView();

El getActionView() te esta devolviendo null porque nunca le asignaste el actionView, intenta usar setActionView() pasandole el spinner que quieras usar.

Spinner spinner = //Crear el spinner como mas te guste
SimpleImageArrayAdapter adapter = new SimpleImageArrayAdapter(this, ArrayMinas);

spinner.setAdapter(adapter);
spinner.setOnItemClickListener((AdapterView.OnItemClickListener) this);
ite.setActionView(spinner);
Israel-ICM
  • 3,258
  • 17
  • 15
  • 25
Erick Silva
  • 1,522
  • 1
  • 6
  • 16
  • Me sigue saliendo el mismo error – TrustThisRobot Dec 10 '19 at 18:28
  • como estas creando el spinner? – Erick Silva Dec 10 '19 at 18:31
  • El problema es que no encuentra la referencia pero ¿ahora como agrega el Spinner al menu? – Jorgesys Dec 10 '19 at 20:57
  • @Jorgesys nose a que te referis con "referencia", como agregar el spinner? se deberia poder con el setActionView(). Imagino que el problema lo tiene al momento crear el Spinner por eso lo tiene en null, en el ejemplo lo intenta obtener del getActionView() y eso no va a funcionar porque primero deberia haberlo seteado – Erick Silva Dec 10 '19 at 21:04
  • Ya lo he arreglado el problema esta como bien decias al definir el Spinner porque en el xml ponia ActionProvider en vez de actionViewClass. Gracias por la ayuda – TrustThisRobot Dec 11 '19 at 07:52
0

el problema que tienes es que no veo que en ningun momento haces referencia a la vista xml del Spinner, prueba con esto.

Spinner spinner = (Spinner) findViewById(R.id.mispinner);

Esto te funcionara si estas trabajando con una Activity.