Problem when using the AdapterView.OnItemSelectedListener implementation in Android Studio

0

I have a problem using the OnItemSelectedListener implementation, everything is fine but when I add the listener to the Spinner I get an error running the application and the program stops, but when commenting on that line everything returns to normal

package com.pro.kevin.conversionlme;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.Spinner;

public class Principal extends AppCompatActivity implements View.OnClickListener , AdapterView.OnItemSelectedListener {

    Button btnConvertir;
    Spinner spinner;
    Spinner spinner2;

    ArrayAdapter<String> items;
    ArrayAdapter<String> decimal;
    ArrayAdapter<String> hexadecimal;

    String elementos[] = new String[]{"SELECCIONE","DECIMAL","BINARIO","HEXADECIMAL","OCTAL"};
    String elementosDecimal[] = new String[]{"BINARIO","HEXADECIMAL","OCTAL"};
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_principal);

        btnConvertir = (Button) findViewById(R.id.btnConvertir);
        spinner  = (Spinner) findViewById(R.id.spinner);
        spinner2 = (Spinner) findViewById(R.id.spinner2);

        items = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, elementos);
        decimal = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, elementosDecimal);
        spinner.setAdapter(items);

        spinner.setOnItemClickListener((AdapterView.OnItemClickListener) this);// Al agregarselo al spinner me tira el error en la app
        spinner2.setOnItemClickListener((AdapterView.OnItemClickListener) this);//igual aqui
        btnConvertir.setOnClickListener(this);
    }

    public void onClick(View v){
        switch (v.getId()){
            case R.id.btnConvertir:

            break;

            default:
            break;
        }
    }

    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
        switch (parent.getId()){
            case R.id.spinner:
                int seleccionado = spinner.getSelectedItemPosition();
                if(seleccionado == 1){
                    //spinner2.setAdapter(decimal);
                }
            break;
        }
    }

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

    }
}
    
asked by Alexis Rodriguez 16.10.2016 в 23:52
source

1 answer

1

If you are implementing OnItemSelectedListener , you should do it this way:

 import android.widget.AdapterView.OnItemSelectedListener;
...
...
   public class Principal extends AppCompatActivity implements View.OnClickListener ,  OnItemSelectedListener {

or also:

 import android.widget.AdapterView;
...
...
   public class Principal extends AppCompatActivity implements View.OnClickListener, AdapterView.OnItemSelectedListener {

Define the listener in this way:

//spinner.setOnItemClickListener((AdapterView.OnItemClickListener) this);
spinner.setOnItemSelectedListener(this);

in this way you can call the method:

public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
    switch (parent.getId()){
        case R.id.spinner:
            int seleccionado = spinner.getSelectedItemPosition();
            if(seleccionado == 1){
                //spinner2.setAdapter(decimal);
            }
        break;
    }
}

I told you that the message:

  

"unfortunately the application stopped"

is a very generic message, you should check specifically in LogCat .

Check that the Spinners are actually within Layout activity_principal.xml

spinner  = (Spinner) findViewById(R.id.spinner);
spinner2 = (Spinner) findViewById(R.id.spinner2);
    
answered by 17.10.2016 / 20:59
source