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

Activity über Button aufrufen

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von Koltanius, 21.05.2011.

  1. Koltanius, 21.05.2011 #1
    Koltanius

    Koltanius Threadstarter Neuer Benutzer

    Beiträge:
    15
    Erhaltene Danke:
    3
    Registriert seit:
    21.05.2011
    Hallo

    Habe seit Kurzem angefangen, mich mit der Android Entwicklung zu beschäftigen und habe nun mein erstes eigenes Projekt begonnen zu schreiben.

    Nun habe ich das Problem, dass auf Knopfdruck eine neue Activity gestartet werden soll und dabei aber ein Force Close entsteht. Habe sowohl versucht, die die Klasse mit onclicklistener zu implementerieren als auch zuletzt mit android:onclick in der xml. Ich hoffe jemand hat kurz Zeit drüber zu schauen und kann mir helfen.

    Code:
    package de.kalorien.rechner;
    
    
    
    
    
    import android.app.Activity;
    import android.content.Intent;
    import android.os.Bundle;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.view.View;
    import android.widget.EditText;
    import android.widget.RadioGroup;
    import android.widget.Spinner;
    import android.widget.Button; 
    import android.view.View.OnClickListener;
    
    
    public class FormularActivity extends Activity  {
        
    	
    	
    	  public static final String sKohlehydrate = "kohlehydrat";
    	 
    	
    	  public static final String sEiweiss = "eiweiss";
    	  
    	 
    	  public static final String sFett = "fett";
    
    	/** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
           
            
        }
        
       
    
    	public void onClick (View v) {
    		
    		EditText txtKohle = (EditText) findViewById(R.id.edit_Kohle);
    		EditText txtEiweiss = (EditText) findViewById(R.id.edit_Eiweiss);
    	 	EditText txtFett = (EditText) findViewById(R.id.edit_Fett); 
        	
    		final double Kohlehydrate = Double.parseDouble(txtKohle.getText().toString());
        	final double Eiweiss = Double.parseDouble(txtEiweiss.getText().toString());
        	final double Fett = Double.parseDouble(txtFett.getText().toString());
    		
        	 
        			final Intent intent = new Intent(this, ErgebnisActivity.class);
        	
        
        	        intent.putExtra(sKohlehydrate, Kohlehydrate);
        	        intent.putExtra(sEiweiss, Eiweiss);
        	        intent.putExtra(sFett, Fett);
        	        
        	     
        	       this.startActivity(intent);
        	        
    	}
        }
    Code:
    package de.kalorien.rechner;
    
    
    import android.app.Activity;
    import android.content.Intent;
    import android.os.Bundle;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.view.View;
    import android.widget.EditText;
    import android.widget.RadioGroup;
    import android.widget.Spinner;
    import android.widget.Button;
    import android.widget.TextView;
    
    public class ErgebnisActivity extends Activity{
    	
    	
    	public void onCreate(Bundle icicle){
    		super.onCreate(icicle);
    		setContentView(R.layout.ergebnis_anzeigen);
    		
    		
    		
    		final Bundle extras = getIntent().getExtras();
    		
    		if(extras != null){
    			final Ergebnis ergebnis = new Ergebnis();
    			
    			ergebnis.Kohlehydrate = extras.getDouble(FormularActivity.sKohlehydrate);
    			ergebnis.Eiweiss = extras.getDouble(FormularActivity.sEiweiss);
    			ergebnis.Fett = extras.getDouble(FormularActivity.sFett);
    			
    			zeigeErgebnis(ergebnis);
    		}
    	}
    		private void zeigeErgebnis(Ergebnis ergebnis){
    			setTitle("Ergebnis");
    			
    			ergebnis.berechneKalorien();
    			
    			final TextView txtKohlehydrate = (TextView) findViewById(R.id.tv_Kohlehydrate);
    			txtKohlehydrate.setText(String.valueOf(ergebnis.Ergebnis[0]));
    			
    			final TextView txtEiweiss = (TextView) findViewById(R.id.tv_Eiweiss);
    			txtEiweiss.setText(String.valueOf(ergebnis.Ergebnis[1]));
    			
    			final TextView txtFett = (TextView) findViewById(R.id.tv_Fett);
    			txtFett.setText(String.valueOf(ergebnis.Ergebnis[2]));
    			
    			final TextView txtErgebnis = (TextView) findViewById(R.id.tv_Ergebnis);
    			txtErgebnis.setText(String.valueOf(ergebnis.Ergebnis[3]));
    		}
    
    }
    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"
        >
    <TextView  
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:text="Bitte geben Sie die Menge an Kohlehydraten, Eiweiss und Fetten ein"
        />
    <EditText android:text="" android:inputType="numberDecimal" android:layout_width="fill_parent" android:id="@+id/edit_Kohle" android:layout_height="70dip"></EditText>
    <EditText android:text="" android:layout_width="fill_parent" android:id="@+id/edit_Eiweiss" android:inputType="numberDecimal" android:layout_height="70dip"></EditText>
    <EditText android:text="" android:layout_width="fill_parent" android:id="@+id/edit_Fett" android:inputType="numberDecimal" android:layout_height="70dip"></EditText>
    <Button android:layout_width="fill_parent" android:text="@string/buttontext" android:layout_height="wrap_content" android:layout_gravity="center" android:id="@+id/button" android:onClick="onClick"> ></Button>
    </LinearLayout>
    
    Wenn weitere Quelldateien benötigt werden, kann ich diese noch einbinden.

    Vielen Dank schonmal.

    Gruß
     
  2. swordi, 21.05.2011 #2
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    1) es gibt gefühlte 100 threads die genau das behandeln.

    2) android.developer.com hilft dir immer weiter

    3) hier gibt es keine hellseher, aber ich vermute mal du hast die ErgebnisActivity nicht im Manifest eingetrage
     
  3. Koltanius, 21.05.2011 #3
    Koltanius

    Koltanius Threadstarter Neuer Benutzer

    Beiträge:
    15
    Erhaltene Danke:
    3
    Registriert seit:
    21.05.2011
    Naja es ist ja nicht so, dass ich zu faul bin, mir threads und tutorials anzugucken. Das habe ich bereits seit gefühlten Stunden getan und bin mir durchaus bewusst, welche Möglichkeiten es gibt, mein Vorhaben zu realisieren. Hab es sowohl mit dem onclicklistener als auch implements onclicklistener und nun mit dem direkten Zuweisen von onclick in der xml versucht. Doch wie geagt bekomme ich es einfach nicht hin und daher wende ich mich ans Forum an erfahrene Leute, die vielleicht einen Fehler sehen und mir eventuell helfen können/möchten.

    Die Activity ist übrigends in der Manifest eingetragen:

    Code:
    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="de.kalorien.rechner"
          android:versionCode="1"
          android:versionName="1.0">
        <uses-sdk android:minSdkVersion="7" />
    
        <application android:icon="@drawable/icon" android:label="@string/app_name">
            <activity android:name=".FormularActivity"
                      android:label="@string/app_name">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
    		<activity android:name=".ErgebnisActivity" /> 
        </application>
    </manifest>
     
  4. DieGoldeneMitte, 21.05.2011 #4
    DieGoldeneMitte

    DieGoldeneMitte Android-Lexikon

    Beiträge:
    1,230
    Erhaltene Danke:
    256
    Registriert seit:
    05.02.2010
    Phone:
    Nexus 5X
    Tablet:
    Nexus 7 (2013)
    Im LogCat findest Du eine Fehlermeldung, die dir sagt, an welcher Stelle im Code die Exception geworfen wird, die zu dem FC führt.

    Aber offen gesagt ist Dein Code insgesamt sehr .... merkwürdig. Für ein einfaches Formular, das auf Knopfdruck eine einfache Rechnung ausführt, brauchst du Activities (außer natürlich die für das "Hauptprogramm") eigentlich nicht. Setze in dem Button einen onClickListener, in *dessen* onClick() die Berechnung durchgeführt wird. Das findet alles in deiner Formularactivity statt.
     
    Zuletzt bearbeitet: 21.05.2011
  5. Koltanius, 21.05.2011 #5
    Koltanius

    Koltanius Threadstarter Neuer Benutzer

    Beiträge:
    15
    Erhaltene Danke:
    3
    Registriert seit:
    21.05.2011
    Ok hab es hinbekommen. Habe in den button nun einen OnCklickListener gesetzt und die Berechnung wie angemerkt, in die FormularActivity gelegt.

    Danke für die Hilfe.

    Gruß
     

Diese Seite empfehlen