wake-up-neo.com

Holen Sie sich die Position eines Spinners in Android

Ich versuche, die Position (Nummer) des Spinners zu ermitteln, wenn er für die Verwendung in einer anderen Aktivität ausgewählt wurde, die je nach ausgewähltem Element jedes Mal eine andere Karte anzeigt. Wenn ich die Anwendung starte, stürzt sie ab. Dies ist der erste Aktivitätscode: 

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

Die Auswahl des Spinners ist wie folgt:

  spinner1.getSelectedItemPosition();

Referenz der Dokumentation: http://developer.Android.com/reference/Android/widget/AdapterView.html#getSelectedItemPosition ()

In Ihrem Code befindet sich die Stelle, auf die Sie sich beziehen, jedoch in Ihrer setOnItemSelectedListener(). Es ist nicht erforderlich, den Spinner abzufragen, da die onItemSelected-Methode die Position als Variable "position" übergeben wird. 

Sie können diese Zeile also ändern in:

TestProjectActivity.this.number = position + 1;

Wenn sich das Problem dadurch nicht beheben lässt, veröffentlichen Sie die Fehlermeldung, die beim Absturz der App generiert wurde.

79
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();
    }
}

Dieser Code soll beide Kontrollkästchen aktivieren.
Gibt es ein Problem damit?

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