-1

I got a Null Pointer Exception when i am trying to create an adapter for spinner in android studio. I did an dialog and the spinner is inside the custom dialog so i dont know how to create this.

This is the code of the dialog inside onCreate()

fab.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View view) {

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

            ArrayAdapter<String> adapter = new ArrayAdapter<>(HomeActivity.this,R.layout.custom_spinner,getResources().getStringArray(R.array.DogTypes));

            adapter.setDropDownViewResource(R.layout.custom_spinner_dropdown);
            spinner.setAdapter(adapter);

            image.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    openFileChooser();
                }
            });

            add.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    addDog();
                }
            });

            dialog.show();
        }
    });

This is the Error i got:

java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Spinner.setAdapter(android.widget.SpinnerAdapter)' on a null object reference
        at com.niko.finalapp.HomeActivity$1.onClick(HomeActivity.java:117)
        at android.view.View.performClick(View.java:7201)
        at android.view.View.performClickInternal(View.java:7170)
        at android.view.View.access$3500(View.java:806)
        at android.view.View$PerformClick.run(View.java:27582)
        at android.os.Handler.handleCallback(Handler.java:883)
        at android.os.Handler.dispatchMessage(Handler.java:100)
        at android.os.Looper.loop(Looper.java:214)
        at android.app.ActivityThread.main(ActivityThread.java:7695)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:516)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:950)

Row 117 is this:

spinner.setAdapter(adapter);

Kasım Özdemir
  • 4,028
  • 3
  • 12
  • 24
NikoSan
  • 11
  • 1
  • Does this answer your question? [How to create a Custom Dialog box in android?](https://stackoverflow.com/questions/13341560/how-to-create-a-custom-dialog-box-in-android) – cutiko Apr 13 '20 at 21:33
  • I think you'll find the answer here: https://stackoverflow.com/questions/3673717/set-spinner-within-custom-dialog – acampana Apr 13 '20 at 21:36

2 Answers2

0

You must inflate the custom dialog view firstly the find view by id from the dialog view :

    final Dialog dialog = new Dialog(CurrentActivity.this, R.style.CustomDialogTheme);
    View view = LayoutInflater.from(CurrentActivity.this).inflate(R.layout.dialog_clear_history, null);

    dialog.setContentView(view);


    Spinner spinner = dialog.findViewById(R.id.spinner_DogType);

    ArrayAdapter<String> adapter = new ArrayAdapter<>(CurrentActivity.this,R.layout.custom_spinner,getResources().getStringArray(R.array.DogTypes));

    adapter.setDropDownViewResource(R.layout.custom_spinner_dropdown);
    spinner.setAdapter(adapter);

    image.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            openFileChooser();
        }
    });

    add.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            addDog();
        }
    });

    dialog.show();
0

I put this code above

fab = findViewById(R.id.flot);

    dialog = new Dialog(HomeActivity.this);
    dialog.setContentView(R.layout.add_item);
NikoSan
  • 11
  • 1