Activity über Button aufrufen

K

Koltanius

Fortgeschrittenes Mitglied
66
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ß
 
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
 
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>
 
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:
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ß
 

Ähnliche Themen

Helmut1A
  • Helmut1A
Antworten
7
Aufrufe
1.114
Helmut1A
Helmut1A
A
  • AnimaAngelo85
Antworten
1
Aufrufe
313
swa00
swa00
MES
Antworten
10
Aufrufe
787
MES
MES
Zurück
Oben Unten