web-dev-qa-db-fra.com

Obtenir la position d'un spinner dans Android

J'essaie d'obtenir la position (numéro) du compteur lorsqu'il est sélectionné pour l'utiliser dans une autre activité qui affichera une carte différente chaque fois en fonction de l'élément sélectionné. quand je lance l'application, il se bloque. c'est le premier code d'activité: 

public class TestProjectActivity extends Activity {
    public Spinner spinner1;
    public Integer number;
    private Button valideButton;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        MySpinner();
        valide_button();

    }

    public void MySpinner() {

        final Spinner spinner1 = (Spinner) findViewById(R.id.spinner1);

        ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
                this, R.array.num, Android.R.layout.simple_spinner_item);
                                      adapter.setDropDownViewResource(Android.R.layout.simple_spinner_dropdown_item);
        spinner1.setAdapter(adapter);

        spinner1.setOnItemSelectedListener(new OnItemSelectedListener() {

            public void onItemSelected(AdapterView<?> parentView,
                    View selectedItemView, int position, long id) {
                // Object item = parentView.getItemAtPosition(position);

                TestProjectActivity.this.number = spinner1
                        .getSelectedItemPosition() + 1;

            }

            public void onNothingSelected(AdapterView<?> arg0) {// do nothing
            }

        });

    }

    public void valide_button() {

        valideButton = (Button) findViewById(R.id.valide_button);
        valideButton.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {

                Intent intent = new Intent(TestProjectActivity.this,
                        MetroMapActivity.class);
                startActivity(intent);
            }

        });

    }

}
32
Khaled Ben Aissa

Le moyen d'obtenir la sélection de la roulette est:

  spinner1.getSelectedItemPosition();

Référence de la documentation: http://developer.Android.com/reference/Android/widget/AdapterView.html#getSelectedItemPosition ()

Cependant, dans votre code, le seul endroit auquel vous faites référence se trouve dans votre setOnItemSelectedListener(). Il n'est pas nécessaire d'interroger le compteur, car la méthode onItemSelected reçoit la position en tant que variable "position". 

Donc, vous pouvez changer cette ligne en:

TestProjectActivity.this.number = position + 1;

Si cela ne résout pas le problème, signalez le message d'erreur généré lorsque votre application se bloque.

79
Plastic Sturgeon
if (position ==0) {
    if (rYes.isChecked()) {
        Toast.makeText(SportActivity.this, "yes ur answer is right", Toast.LENGTH_LONG).show();
    } else if (rNo.isChecked()) {
        Toast.makeText(SportActivity.this, "no.ur answer is wrong", Toast.LENGTH_LONG).show();
    }
}

Ce code est censé cocher les deux cases.
Y at-il un problème avec cela?

1
user4422478
    final int[] positions=new int[2]; 
    Spinner sp=findViewByID(R.id.spinner);

    sp.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {

        @Override
        public void onItemSelected(AdapterView<?> arg0, View arg1,
                int arg2, long arg3) {
            // TODO Auto-generated method stub
            Toast.makeText( arg2....);
        }

        @Override
        public void onNothingSelected(AdapterView<?> arg0) {
            // TODO Auto-generated method stub

        }
    });
1
selvaiyyamperumal