-1

I have this code for my simple spinner:

 private Spinner spnr_gender;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_complete_profile);

    //GUI
    spnr_gender = (Spinner)findViewById(R.id.spnr_finish_gender);

    ArrayAdapter<CharSequence> gender_adapter = ArrayAdapter.createFromResource(this, R.array.strs_gender, android.R.layout.simple_spinner_item);
    gender_adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spnr_gender.setAdapter(gender_adapter);
    spnr_gender.setOnItemClickListener((AdapterView.OnItemClickListener) this);

}


@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
    String selectChoice = adapterView.getItemAtPosition(i).toString();
    Toast.makeText(adapterView.getContext(), selectChoice, Toast.LENGTH_SHORT).show();
}

@Override
public void onNothingSelected(AdapterView<?> adapterView) {

}

What I want is to toast what the user has selected on the spinner. My string array in the strings.xml:

<string-array name="strs_gender">
    <item>Male</item>
    <item>Female</item>
</string-array>

When running the app it just crashed.
I can't find anything on the logcat but my suspect is this line spnr_gender.setOnItemClickListener((AdapterView.OnItemClickListener) this);.

How can I fix this?

Kilazur
  • 3,089
  • 1
  • 22
  • 48
Dranreb
  • 93
  • 1
  • 1
  • 10
  • you pass wrong parameter in adapter. parameter should be like this ArrayAdapter.createFromResource(this, android.R.layout.simple_spinner_item, list); – Hemant Parmar Feb 26 '18 at 11:41
  • Possible duplicate of [Unfortunately MyApp has stopped. How can I solve this?](https://stackoverflow.com/questions/23353173/unfortunately-myapp-has-stopped-how-can-i-solve-this) – Vladyslav Matviienko Feb 26 '18 at 11:42

4 Answers4

2

Use this

spnr_gender.setOnItemSelectedListener(this);

Instead of

spnr_gender.setOnItemClickListener((AdapterView.OnItemClickListener) this);

setOnItemSelectedListener

void setOnItemSelectedListener (AdapterView.OnItemSelectedListener listener)

Register a callback to be invoked when an item in this AdapterView has been selected.

EDIT

Use this

 ArrayAdapter<CharSequence> gender_adapter = ArrayAdapter.createFromResource(this,  android.R.layout.simple_spinner_item,getResources().getStringArray(R.array.strs_gender));

Instead of this

ArrayAdapter<CharSequence> gender_adapter = ArrayAdapter.createFromResource(this, R.array.strs_gender, android.R.layout.simple_spinner_item);

Spinner example

Community
  • 1
  • 1
AskNilesh
  • 67,701
  • 16
  • 123
  • 163
0

here is the solution

private Spinner spnr_gender;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_complete_profile);

    //GUI
    spnr_gender     =   (Spinner) findViewById(R.id.spnr_finish_gender);

    ArrayAdapter<CharSequence> gender_adapter = ArrayAdapter.createFromResource(this, R.array.strs_gender, android.R.layout.simple_spinner_item);
    gender_adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spnr_gender.setAdapter(gender_adapter);
    spnr_gender.setOnItemSelectedListener((AdapterView.OnItemSelectedListener) this);

}


@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
    String selectChoice = adapterView.getItemAtPosition(i).toString();
    Toast.makeText(adapterView.getContext(), selectChoice, Toast.LENGTH_SHORT).show();
}

@Override
public void onNothingSelected(AdapterView<?> adapterView) {

}
Mitesh Machhoya
  • 404
  • 2
  • 8
0

Use Only (this) context while declaring item click listener Do not cast with (AdapterView.OnItemClickListener) with it.

Use only

spnr_gender.setOnItemSelectedListener(this);
Quick learner
  • 10,632
  • 4
  • 45
  • 55
0

make it in this fashion

sp.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {

            }

            @Override
            public void onNothingSelected(AdapterView<?> parent) {

            }
        });
Sunil P
  • 3,698
  • 3
  • 13
  • 20