zurück-Button lässt Activity abstürzen

  • 3 Antworten
  • Letztes Antwortdatum
S

Schmucus

Fortgeschrittenes Mitglied
27
Hallo Leute,

also ich habe in meiner App eine Activity mit zwei Eingabefeldern und zwei Buttons. Wenn man einen der Buttons drückt werden die beiden Eingabefelder eingelesen und mit den Werten eine neue Activity gestartet. Soweit funktioniert das auch ganz gut. Mein Problem ist nur, dass wenn man die Activity startet, aber anstatt etwas einzugeben und nen Button zu drücken man die Zurück-Taste benutzt, die App mit folgender Fehlermeldung abstürzt:

java.lang.RuntimeException: Unable to destroy Activity: java.lang.NullPointerException
at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:3314)

Würde ich mich gerade nicht zu blöd anstellen um aus LogCat zu kopieren, würde ich hier auch die gesamte Fehlermeldung einfügen anstatt abzuschreiben. Aber ich denke mal das hier ist der relevante Part.

Hier mal der Code der betreffenden Klasse:

Code:
package com.blabla.ausgaben;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class UpdateActivity extends Activity {

	
	
	private float wert;
	private String zweck;
	private AusgabenOpenHandler openHandler;
	private long id;
	private int monat;
	private int jahr;
	
	
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // Parameter des Intents empfangen
        Intent intent = getIntent();
        monat = intent.getIntExtra("monat", 0);
        jahr = intent.getIntExtra("jahr", 0);
        id = intent.getLongExtra("id", 0);
        setContentView(R.layout.activity_update);
        Button einnahmeButton = (Button) findViewById(R.id.einnahmebutton);
        einnahmeButton.setOnClickListener(new OnClickListener() {
        				public void onClick(View v) {
        					einnahmeButtonClicked();
        					}
        });
        Button ausgabeButton = (Button) findViewById(R.id.ausgabebutton);
        ausgabeButton.setOnClickListener( new OnClickListener() {
        	public void onClick(View v) {
        		ausgabeButtonClicked();
        		}
        });
  
    }	// Ende onCreate

   
    
    public void einnahmeButtonClicked() {
    	EditText editWert = (EditText) findViewById(R.id.eingabefeld);
    	wert = Float.valueOf(editWert.getText().toString());
    	EditText editZweck = (EditText) findViewById(R.id.zweckfeld);
    	zweck = editZweck.getText().toString();
    	System.out.println(id);
    	System.out.println(wert);
    	System.out.println(zweck);
    	openHandler = new AusgabenOpenHandler(this);
    	openHandler.update(id, wert, zweck);
    	Toast.makeText(this, "Werte geändert", Toast.LENGTH_SHORT).show();
    	Intent intent = new Intent(UpdateActivity.this, TestActivityActivity.class);
    	intent.putExtra("monat", monat);
    	intent.putExtra("jahr", jahr);
    	startActivity(intent);
    }
    
    // testet ob die Textfelder funktionieren
    public void test() {
    	EditText editWert = (EditText) findViewById(R.id.eingabefeld);
    	EditText editZweck = (EditText) findViewById(R.id.zweckfeld);
    	String blabla = editWert.getText().toString();
    	editZweck.setText(blabla);
    }
    
    
    @Override
    protected void onDestroy() {
    	openHandler.close();
    	super.onDestroy();    	
    }
    
    
    
    public void ausgabeButtonClicked() {
    	EditText editWert = (EditText) findViewById(R.id.eingabefeld);
    	wert = Float.valueOf(editWert.getText().toString());
    	wert = wert - (2*wert);
    	EditText editZweck = (EditText) findViewById(R.id.zweckfeld);
    	zweck = editZweck.getText().toString();
    	System.out.println(id);
    	System.out.println(wert);
    	System.out.println(zweck);
    	openHandler = new AusgabenOpenHandler(this);
    	openHandler.update(id, wert, zweck);
    	Toast.makeText(this, "Werte geändert", Toast.LENGTH_SHORT).show();
    	Intent intent = new Intent(UpdateActivity.this, TestActivityActivity.class);
    	intent.putExtra("monat", monat);
    	intent.putExtra("jahr", jahr);
    	startActivity(intent);
    }
    
    
    
    
    
    
    
    
}	// Ende der Klasse



Ich hoffe ihr könnt mir sagen wo mein Fehler liegt. So wie ich mich kenne hab ich bestimmt nur wieder irgendwas banales übersehen :rolleyes2:
 
Zuletzt bearbeitet:
also der logcat zeigt dir auch sicher die entsprechende zeile, aber vermutlich wirds der openhandler im onDestroy sein

frag mal auf null ab
 
Danke, ist tatsächlich das onDestroy. Wenn ich es auskommentiere stürzt nichts mehr ab. Nur in dem Buch aus dem ich den Umgang mit Datenbanken habe steht ausdrücklich drin, dass die geöffnete Datenbank geschlossen werden muss, weswegen man die onDestroy-Methode überschreiben soll...
 
ja das ist schon korrekt so, aber du öffnest deine db erst beim button klick. bis dahin ist das NULL
 

Ähnliche Themen

D
Antworten
5
Aufrufe
595
swa00
swa00
BerndFfm
Antworten
7
Aufrufe
1.239
swa00
swa00
Zurück
Oben Unten