1. Nimm jetzt an unserem 2. ADVENT-Gewinnspiel teil - Alle Informationen findest Du hier!

Werte aus AutocompleteTextview und Spinner weiterreichen

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von donhenne, 07.01.2011.

  1. donhenne, 07.01.2011 #1
    donhenne

    donhenne Threadstarter Neuer Benutzer

    Beiträge:
    6
    Erhaltene Danke:
    0
    Registriert seit:
    06.01.2011
    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>
    
     
  2. the_alien, 07.01.2011 #2
    the_alien

    the_alien Android-Lexikon

    Beiträge:
    1,559
    Erhaltene Danke:
    184
    Registriert seit:
    04.05.2009
    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");
    }
     
    donhenne bedankt sich.
  3. donhenne, 07.01.2011 #3
    donhenne

    donhenne Threadstarter Neuer Benutzer

    Beiträge:
    6
    Erhaltene Danke:
    0
    Registriert seit:
    06.01.2011
    Super. Danke für die schnelle Antwort.
    Werd es gleich mal ausprobieren :)
     
  4. donhenne, 10.01.2011 #4
    donhenne

    donhenne Threadstarter Neuer Benutzer

    Beiträge:
    6
    Erhaltene Danke:
    0
    Registriert seit:
    06.01.2011
    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>
    
     
  5. the_alien, 10.01.2011 #5
    the_alien

    the_alien Android-Lexikon

    Beiträge:
    1,559
    Erhaltene Danke:
    184
    Registriert seit:
    04.05.2009
    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.
     
  6. donhenne, 10.01.2011 #6
    donhenne

    donhenne Threadstarter Neuer Benutzer

    Beiträge:
    6
    Erhaltene Danke:
    0
    Registriert seit:
    06.01.2011
    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
     
  7. the_alien, 10.01.2011 #7
    the_alien

    the_alien Android-Lexikon

    Beiträge:
    1,559
    Erhaltene Danke:
    184
    Registriert seit:
    04.05.2009
    Du musst die Sachen aus dem getStringExtra nach deinen Wünschen zusammenfassen und anzeigen...
     
  8. donhenne, 18.01.2011 #8
    donhenne

    donhenne Threadstarter Neuer Benutzer

    Beiträge:
    6
    Erhaltene Danke:
    0
    Registriert seit:
    06.01.2011
    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.
     
  9. the_alien, 19.01.2011 #9
    the_alien

    the_alien Android-Lexikon

    Beiträge:
    1,559
    Erhaltene Danke:
    184
    Registriert seit:
    04.05.2009
    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);
        }
    }
    
     
    donhenne bedankt sich.
  10. donhenne, 20.01.2011 #10
    donhenne

    donhenne Threadstarter Neuer Benutzer

    Beiträge:
    6
    Erhaltene Danke:
    0
    Registriert seit:
    06.01.2011
    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
     

Diese Seite empfehlen