Wert von Spinner abfragen -> entsprechende Activity aufrufen

  • 4 Antworten
  • Letztes Antwortdatum
R

RobNeck

Ambitioniertes Mitglied
3
Hallo zusammen,

ich habe mir einige Tutorials angeschaut, meine Javakenntnisse wieder etwas aufgefrischt und möchte nun - leaning by doing - mit meiner ersten eigenen App starten. Die ist (noch) recht simpel:

Nach dem Start sieht man einen Bildschirm mit einem Spinner und einem Button. Je nach dem welcher Wert im Spinner ausgewählt ist, soll durch Klicken des Buttons eine weitere Activity aufgerufen werden. Das funktioniert allerdings noch nicht so richtig. Nach dem Klicken des Buttons passiert aktuell nämlich gar nichts. Der Code sieht wie folgt aus:

Code:
package de.test.androidsuperfreunde;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.widget.Spinner;
import android.widget.TextView;

public class SuperfreundeActivity extends Activity {
	
	private Spinner spinner1;
	

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_superfreunde);
		
		spinner1 = (Spinner) findViewById(R.id.spinnerAuswahl);

	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.superfreunde, menu);
		return true;
	}
	
	public void onButtonClick(View view) {

		String auswahl; 
		auswahl = spinner1.getSelectedItem().toString();
		
		TextView satz = (TextView) findViewById(R.id.test);
		satz.setText(auswahl);
		
		if(auswahl == "Felix") {
			startActivity(new Intent(this, FreundFelixActivity.class));
		} else if(auswahl == "Stefan"){
			startActivity(new Intent(this, FreundStefanActivity.class));
		}
	}

}

Testweise lasse ich mit mit "satz.setText(auswahl)" ausgeben, was sich im String auswahl befindet. Da ist - je nach Auswahl - exakt auch Felix bzw Stefan drin. Mit korrekter Schreibweise. Beide Activitys sind im AndroidManifest deklariert.

Wenn ich statt else if nur else mache, dann ruft er mir FreundStefanActivity.class auf. An einem flaschen Aufruf scheint es also auch nicht zu liegen. Ich verstehe gerade einfach nicht, wo das Problem liegt :confused2:
 
Strings nicht mit == vergleichen. Immer mit ".equals()". Ggf. löst das schon dein Problem.
 
Jo, das war's. Danke dir! :thumbsup:
 
Zur Erklärung warum das so ist:
mit == werden 2 Objekte verglichen.
String a = "test";
String b = "test";

gibt zwar 2 String-Objekte mit gleichem Inhalt beim vergleich mit == werden aber die einzelnen Objekte verglichen.*

mit equals() was in der String Klasse überschrieben wird, wird der Inhalt verglichen.


*Das Beispiel stimmt nicht ganz, weil wenn ich mich richtig erinnere Java intern bei dem Beispiel auf das gleiche Objekt zeigen würde (wird nur einmal angelegt, wenn man die Strings direkt im Code definiert). Aber es zeigt hoffentlich warum das so ist ;)
 
Danke für die Aufklärung!
 
Zurück
Oben Unten