Fallunterscheidung mit Spinnerdaten will nicht so richtig!?

  • Antworten:6
  • Bentwortet
Kurt G.
  • Forum-Beiträge: 67

18.03.2011, 01:46:33 via Website

Hallo liebe Leute, habe mich mittlerweile ein wenig in die Android entwicklung eingefunden, jedoch habe ich ein Problem, und zwar möchte ich je nachdem welches Item im Spinner ausgewählt wurde bei klick auf weiter in eine andere Activit

Spinner Item1 = Activity 1
Spinner Item2 = Activity 2
Spinner Item3 = Activity 3

Nur öffnet er mir bei folgendem Quellcode immer nur die 3.... Ich hoffe ihr könnt mir da vielleicht weiterhelfen...
1package de.code.worker.lotto.helferlein;
2
3import android.app.Activity;
4import android.content.Intent;
5import android.os.Bundle;
6import android.view.View;
7import android.widget.Button;
8import android.widget.Spinner;
9
10
11public class AddLottoscheinScreenActivity extends Activity {
12 @Override
13 public void onCreate(Bundle savedInstanceState) {
14 super.onCreate(savedInstanceState);
15 setContentView(R.layout.addlottoscheinscreenactivity);
16
17 final Button button = (Button) findViewById(R.id.AddLottoscheinScreenActivityButtonSend);
18 button.setOnClickListener(new View.OnClickListener () {
19 public void onClick (View v) {
20 Spinner list=(Spinner) findViewById(R.id.spinner1);
21 list.getSelectedItem();
22
23 if (list.getSelectedItem() == "spiel1") {
24 Intent change1 = new Intent (AddLottoscheinScreenActivity.this, AddSpiel1.class);
25 startActivity(change1);
26 }
27
28 else {
29 if (list.getSelectedItem() == "spiel2") {
30 Intent change2 = new Intent (AddLottoscheinScreenActivity.this, AddSpiel2.class);
31 startActivity(change2);
32 }
33
34 else {
35 Intent change3 = new Intent (AddLottoscheinScreenActivity.this, AddSpiel3.class);
36 startActivity(change3);
37 }
38 }
39 }
40 });
41 }
42
43}

Antworten
Mac Systems
  • Forum-Beiträge: 1.727

18.03.2011, 02:39:25 via Website

Das ist auch klar. Du solltest ein wenig deine Java Grundlagen aufwerten.

Preisfrage: Wie vergleicht man Strings in Java ?

[a] mittels ==
[b] gar nicht
[c] mittels equals


Tor 1 wartet ...

Windmate HD, See you @ IO 14 , Worked on Wundercar, Glass V3, LG G Watch, Moto 360, Android TV

Antworten
San Blarnoi
  • Forum-Beiträge: 2.545

18.03.2011, 09:28:23 via Website

@Mac:
liefert list.getSelectedItem() nicht ein Object? ;)

@Kurt:
ich würde list.getSelectedItemIndex() verwenden und den mit 0,1,2 vergleichen.

— geändert am 18.03.2011, 11:03:03

Antworten
Kurt G.
  • Forum-Beiträge: 67

18.03.2011, 11:59:50 via Website

super danke, habs jetzt mittels getSelectedItemId gemacht, und funktioniert...

Antworten
San Blarnoi
  • Forum-Beiträge: 2.545

18.03.2011, 13:01:15 via Website

Wenn du dir sicher bist, das du dich damit nur auf zugesicherte Eigenschaften verläßt, ist das auch OK.
Ich hätte jetzt (aufgrund der Art deines Code-Schnipsels) vermutet, das du den Spinner mit einem String-Array befüllst, dann würdest du die IDs nicht selber vergeben;
Android wird dann vermutlich den Index als ID liefern, aber wenn das nicht explizit dokumentiert ist, würde ich getSelectedItemIndex() bevorzugen.

Antworten
Rafael K.
  • Forum-Beiträge: 2.359

18.03.2011, 13:07:10 via Website

and dev
Android wird dann vermutlich den Index als ID liefern, aber wenn das nicht explizit dokumentiert ist, würde ich getSelectedItemIndex() bevorzugen.
Sehe ich genauso. Hab ich bei mir auch immer so gemacht, weil man den String-Array und damit den Index jedes Eintrags komplett kontrollieren kann.

Antworten
Mac Systems
  • Forum-Beiträge: 1.727

18.03.2011, 14:03:37 via Website

@And Dev: Bei dem Code gehe ich davon aus das Strings im dem Spinner sind. Objekte vergleicht man ja schließlich auch mit equals!

Windmate HD, See you @ IO 14 , Worked on Wundercar, Glass V3, LG G Watch, Moto 360, Android TV

Antworten