Werte aus AutocompleteTextview und Spinner weiterreichen

D

donhenne

Neues Mitglied
0
Hallo!

Bin noch recht neu im Android-Gebiet und versuche gerade Werte an eine andere Activity weiterzureichen. Mein Problem ist, dass ich alle Werte gebündelt an die nächste Activity weitergeben und anzeigen lassen möchte, ich es aber nicht hinkriege. Habe schon alles mögliche mit putExtra(), getExtra() etc ausproiert. Code da schon ewig dran rum.
Vielleicht kann ja wer helfen :)

Hier mal der Code:

start.java:
Code:
public class start extends Activity {
	/** Called when the activity is first created. */
	// Variablen fuer die einzelnen Menueeintraege

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);

		// Autocomplete fuer Strassen
		AutoCompleteTextView textView = (AutoCompleteTextView) findViewById(R.id.autocomplete_strassen);
		String[] strasse = getResources()
				.getStringArray(R.array.strassen_array);
		ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
				R.layout.list_item, strasse);
		textView.setAdapter(adapter);

		// Spinner fuer Monateauswahl
		final Spinner spinner1 = (Spinner) findViewById(R.id.Spinner01);
		ArrayAdapter<CharSequence> adapter1 = ArrayAdapter.createFromResource(
				this, R.array.monate_array,
				android.R.layout.simple_spinner_item);
		adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
		spinner1.setAdapter(adapter1);

		// Spinner fuer Jahreauswahl
		Spinner spinner2 = (Spinner) findViewById(R.id.Spinner02);
		ArrayAdapter<CharSequence> adapter2 = ArrayAdapter
				.createFromResource(this, R.array.jahre_array,
						android.R.layout.simple_spinner_item);
		adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
		spinner2.setAdapter(adapter2);

		// Spinner fuer Muellauswahl
		Spinner spinner4 = (Spinner) findViewById(R.id.Spinner04);
		ArrayAdapter<CharSequence> adapter4 = ArrayAdapter
				.createFromResource(this, R.array.muell_array,
						android.R.layout.simple_spinner_item);
		adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
		spinner4.setAdapter(adapter4);
	}

	// Ergebnis anzeigen
	public void ergebnisAufruf(View v) {
		Intent intent = new Intent(this, ergebnis.class);
		startActivity(intent);
	}

	// zurück zum Anfangsbildschirm
	public void backToMain(View v) {
		Intent intent = new Intent(this, start.class);
		startActivity(intent);
	}

}
ergebnis.java
Code:
public class ergebnis extends Activity {
    /** Called when the activity is first created. */
	 
    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        setContentView(R.layout.ergebnis_anzeigen);        
    }
    
    public void backToMain(View v) {
    	Intent intent = new Intent(this, start.class);
    	startActivity(intent);
    }
}
main.xml
Code:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
	android:orientation="vertical" android:layout_width="fill_parent"
	android:layout_height="fill_parent" android:background="@color/hintergrund">
	
		<TextView android:layout_width="fill_parent"
		android:layout_height="wrap_content" android:textColor="@color/schrift"
		android:text="Wählen Sie Ihre Straße und die gewünschte Abfallart aus." />
		
		<TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Strasse" />
        
		<AutoCompleteTextView android:id="@+id/autocomplete_strassen"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="5dp"/>
		
		<TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Monat" />
        
        <Spinner android:id="@+id/Spinner01" android:layout_width="wrap_content"
		android:layout_height="wrap_content" android:entries="@array/monate_array" android:drawSelectorOnTop="true"></Spinner>
        
        <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Jahr" />
        
        <Spinner android:id="@+id/Spinner02" android:layout_width="wrap_content"
		android:layout_height="wrap_content" android:entries="@array/jahre_array" android:drawSelectorOnTop="true"></Spinner>
        
        <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Müllart" />
        
        <Spinner android:id="@+id/Spinner04" android:layout_width="wrap_content"
		android:layout_height="wrap_content" android:entries="@array/muell_array" android:drawSelectorOnTop="true"></Spinner>
        
        <Button android:text="Anzeigen" android:id="@+id/Button01"
		android:layout_width="wrap_content" android:layout_height="wrap_content" 
		android:layout_gravity="center_horizontal" android:onClick="ergebnisAufruf"></Button>
		
		<ImageView android:id="@+id/ImageView01"
		android:layout_width="wrap_content" android:layout_height="wrap_content"
		android:src="@drawable/logo" android:layout_gravity="center_horizontal"></ImageView>
		
</LinearLayout>
ergebnis_anzeigen.xml
Code:
<?xml version="1.0" encoding="utf-8"?>

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
	android:orientation="vertical" android:layout_width="fill_parent"
	android:layout_height="fill_parent" android:background="@color/hintergrund">
	
	<View android:layout_height="2dip" android:background="#FFC43B" />
	
	<TableRow android:id="@+id/TableRow01" android:layout_width="wrap_content"
		android:layout_height="wrap_content">
		
		<TextView android:id="@+id/TextView01" android:layout_width="wrap_content"
			android:layout_height="wrap_content" android:text="Art"
			android:padding="3dip"></TextView>
			
		<TextView android:text="Datum" android:id="@+id/TextView02"
			android:layout_width="wrap_content" android:layout_height="wrap_content"
			android:padding="3dip"></TextView>
			
		<TextView android:text="Text" android:id="@+id/TextView03"
			android:layout_width="wrap_content" android:layout_height="wrap_content"
			android:padding="3dip"></TextView>
			
	</TableRow>
	
	<View android:layout_height="2dip" android:background="#FFC43B" />
	
	<Button android:text="zurück" android:id="@+id/Button02"
		android:layout_width="wrap_content" android:layout_height="wrap_content" 
		android:layout_gravity="center_horizontal" android:onClick="backToMain"></Button>

	<ImageView android:id="@+id/ImageView01"
		android:layout_width="wrap_content" android:layout_height="wrap_content"
		android:src="@drawable/logo" android:layout_gravity="center_horizontal"></ImageView>
		
</TableLayout>
 
Code:
Intent intent = new Intent(this, blah.class);
intent.putExtra("MeinTolleTextBoxAuswahl", textbox.get...);
intent.putExtra("MeineTolleSpinnerAuswahl", spinner.get...);
startActivity(intent);

Code:
public void onCreate(...) {
intent.getStringExtra("MeinTolleTextBoxAuswahl");
intent.getStringExtra("MeineTolleSpinnerAuswahl");
}
 
  • Danke
Reaktionen: donhenne
Super. Danke für die schnelle Antwort.
Werd es gleich mal ausprobieren :)
 
Hi. Ich wieder :)
So, hab das mal ausprobiert wie du es geschrieben hast, aber irgendwie funzt das bei mir nicht. Keine Ahnung was ich da falsch mache.
Wenn ich in der start.java die Activity starte, dauert es ewig bis wann angezeigt wird und und die Spinner reagieren auf gar nichts mehr. LogCat meldet, dass .start nonstop gestartet wird.

Ich will, dass die ausgewählten Werte in der start.java durch die ergebnis.java (Layout:ergebnis_anzeigen.xml) dargestellt werden.
Was muss ich nun genau machen, um mir die Auswahl anzeigen zu lassen.
Sorry nochmal, aber mir fehlt sozusagen noch das richtige Verständnis für Android-Programmierung, aber wie gesagt ist alles noch Neuland für mich :p

Danke schonmal im Vorraus!

Hier nochmal meine geänderten Dateien:
start.java
Code:
public class start extends Activity {
	/** Called when the activity is first created. */
	// Variablen fuer die einzelnen Menueeintraege

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);

		// Autocomplete fuer Strassen
		AutoCompleteTextView textView = (AutoCompleteTextView) findViewById(R.id.autocomplete_strassen);
		String[] strasse = getResources()
				.getStringArray(R.array.strassen_array);
		ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
				R.layout.list_item, strasse);
		textView.setAdapter(adapter);

		// Spinner fuer Monateauswahl
		final Spinner spinner1 = (Spinner) findViewById(R.id.Spinner01);
		ArrayAdapter<CharSequence> adapter1 = ArrayAdapter.createFromResource(
				this, R.array.monate_array,
				android.R.layout.simple_spinner_item);
		adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
		spinner1.setAdapter(adapter1);

		// Spinner fuer Jahreauswahl
		Spinner spinner2 = (Spinner) findViewById(R.id.Spinner02);
		ArrayAdapter<CharSequence> adapter2 = ArrayAdapter
				.createFromResource(this, R.array.jahre_array,
						android.R.layout.simple_spinner_item);
		adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
		spinner2.setAdapter(adapter2);

		// Spinner fuer Muellauswahl
		Spinner spinner4 = (Spinner) findViewById(R.id.Spinner04);
		ArrayAdapter<CharSequence> adapter4 = ArrayAdapter
				.createFromResource(this, R.array.muell_array,
						android.R.layout.simple_spinner_item);
		adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
		spinner4.setAdapter(adapter4);
		
		Intent intent = new Intent(this, start.class);
		intent.putExtra("autocomplete_strassen", textView.getText().toString());
		intent.putExtra("Spinner01", spinner1.getSelectedItem().toString());
		intent.putExtra("Spinner02", spinner2.getSelectedItem().toString());
		intent.putExtra("Spinner04", spinner4.getSelectedItem().toString());
		startActivity(intent);
	}

	// Ergebnis anzeigen
	public void ergebnisAufruf(View v) {
		Intent intent = new Intent(this, ergebnis.class);
		startActivity(intent);
	}

	// zurück zum Anfangsbildschirm
	public void backToMain(View v) {
		Intent intent = new Intent(this, start.class);
		startActivity(intent);
	}

}
ergebnis.java:
Code:
public class ergebnis extends Activity {
    /** Called when the activity is first created. */
	 
    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        setContentView(R.layout.ergebnis_anzeigen);

//[B]Hier zeigt Eclipse Fehler bei "intent" -> cannot be resolved[/B]
        intent.getStringExtra("autocomplete_strassen");
        intent.getStringExtra("Spinner01");
        intent.getStringExtra("Spinner02");
        intent.getStringExtra("Spinner04");
    }
    
    public void backToMain(View v) {
    	Intent intent = new Intent(this, start.class);
    	startActivity(intent);
    }
}
ergebnis_anzeigen.xml:
Code:
<?xml version="1.0" encoding="utf-8"?>

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
	android:orientation="vertical" android:layout_width="fill_parent"
	android:layout_height="fill_parent" android:background="@color/hintergrund">
	
	<View android:layout_height="2dip" android:background="#FFC43B" />
	
	<TableRow android:id="@+id/TableRow01" android:layout_width="wrap_content"
		android:layout_height="wrap_content">
		
		<TextView android:id="@+id/TextView01" android:layout_width="wrap_content"
			android:layout_height="wrap_content" android:text="Art"
			android:padding="3dip"></TextView>
			
		<TextView android:text="Datum" android:id="@+id/TextView02"
			android:layout_width="wrap_content" android:layout_height="wrap_content"
			android:padding="3dip"></TextView>
			
		<TextView android:text="Müllart" android:id="@+id/TextView03"
			android:layout_width="wrap_content" android:layout_height="wrap_content"
			android:padding="3dip"></TextView>
			
	</TableRow>
	
	<View android:layout_height="2dip" android:background="#FFC43B" />
	
	<TableRow android:id="@+id/TableRow02" android:layout_width="wrap_content"
		android:layout_height="wrap_content">
		
		<TextView android:id="@+id/TextView04" android:layout_width="wrap_content"
			android:layout_height="wrap_content" android:padding="3dip"></TextView>
			
		<TextView android:id="@+id/TextView05"
			android:layout_width="wrap_content" android:layout_height="wrap_content"
			android:padding="3dip"></TextView>
			
		<TextView android:id="@+id/TextView06"
			android:layout_width="wrap_content" android:layout_height="wrap_content"
			android:padding="3dip"></TextView>
			
	</TableRow>
	
	<View android:layout_height="2dip" android:background="#FFC43B" />
	
	<Button android:text="zurück" android:id="@+id/Button02"
		android:layout_width="wrap_content" android:layout_height="wrap_content" 
		android:layout_gravity="center_horizontal" android:onClick="backToMain"></Button>

	<ImageView android:id="@+id/ImageView01"
		android:layout_width="wrap_content" android:layout_height="wrap_content"
		android:src="@drawable/logo" android:layout_gravity="center_horizontal"></ImageView>
		
</TableLayout>
 
Das Intent kriegst du über getIntent().

Und du hast die quasi eine Endlosschleife gebaut in der onCreate deiner start Klasse:
Code:
Intent intent = new Intent(this, start.class);
		intent.putExtra("autocomplete_strassen", textView.getText().toString());
		intent.putExtra("Spinner01", spinner1.getSelectedItem().toString());
		intent.putExtra("Spinner02", spinner2.getSelectedItem().toString());
		intent.putExtra("Spinner04", spinner4.getSelectedItem().toString());
		startActivity(intent);
Die Activity startet und ruft sich selber immer wieder neu auf. Das kann so nicht funktionieren.
 
Oh stimmt! Hab den Wald vor lauter Bäumen nicht mehr gesehen. Fehler behoben :)
Habe jetzt die ergebnis.java angepasst und es geht auch, etwas in die Tabelle zu schreiben. Aber irgendwie mache ich das wohl mit dem getIntent() falsch.

ergebnis.java:
Code:
public class ergebnis extends Activity {
    /** Called when the activity is first created. */
	 
    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
       
        final Intent intent = getIntent();
        
        intent.getStringExtra("autocomplete_strassen");
        intent.getStringExtra("Spinner01");
        intent.getStringExtra("Spinner02");
        intent.getStringExtra("Spinner04");
        setContentView(R.layout.ergebnis_anzeigen); 
        
        [B]//art_view = ID der TextView n der Ausgabe stattfinden soll[/B]
        TextView tx = (TextView) findViewById(R.id.art_view);
        tx.setText(getIntent().toString());         
    }
    
        public void backToMain(View v) {
    	Intent intent = new Intent(this, start.class);
    	startActivity(intent);
    }
}

Wollte nun nur den vom ersten Spinner gewählten Eintrag mir anzeigen lassen. Was ist denn falsch an meinem Aufruf? Weil es wird der komplette Intent ausgegeben und ich will ja nur den gewählten Eintrag. Geht das vielleicht über getSelectedItem() oder so?

Danke schonmal im Vorraus

PS: Ich probiers ja wirklich selber hinzukriegen, aber ich steh gerade wiedermal aufm Schlauch
 
Du musst die Sachen aus dem getStringExtra nach deinen Wünschen zusammenfassen und anzeigen...
 
Hi! Ich wieder...
Habe nun die ganze Zeit rumprobiert und bekomme es einfach nicht hin :(

Kann wir vielleicht ein Code-Beispiel zeigen, wie ich jetzt beispielsweise den String des angeklickten Feldes in der AutocompleteBox in der Tabell der ergebnis_anzeigen.xml reinhau.

Glaube eh, dass da irgendwas in meinem Code net richtig ist.
 
Code:
public class ergebnis extends Activity {
    /** Called when the activity is first created. */
	 
    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
       
        final Intent intent = getIntent();
        
        String strassen = intent.getStringExtra("autocomplete_strassen");
        String spinner1 = intent.getStringExtra("Spinner01");
        String spinner2 = intent.getStringExtra("Spinner02");
        String spinner4 = intent.getStringExtra("Spinner04");
        setContentView(R.layout.ergebnis_anzeigen); 
        
        [B]//art_view = ID der TextView n der Ausgabe stattfinden soll[/B]
        TextView tx = (TextView) findViewById(R.id.art_view);
        tx.setText(strassen);         
        //[b]andere variablen (spinner1...) irgendwo anzeigen lassen[/b]
    }
    
        public void backToMain(View v) {
    	Intent intent = new Intent(this, start.class);
    	startActivity(intent);
    }
}
 
  • Danke
Reaktionen: donhenne
Ahh, jetzt hab ichs endlich abgerafft! Geht jetzt alles wie ich es haben wollte.
Danke für deine Geduld und Hilfe :)

Nächsten Fragen kommen bestimmt bald :p
 

Ähnliche Themen

5
Antworten
22
Aufrufe
1.412
590239
5
R
  • RalfKahl
Antworten
10
Aufrufe
285
RalfKahl
R
R
  • Robby1950
2
Antworten
23
Aufrufe
1.003
Robby1950
R
Zurück
Oben Unten