Hallo an Alle,
bei dem nachfolgendem Programm (kompletter Quellcode am Ende) erhalte ich beim Aufruf von
openhandler.insert(datum);
eine NullPointerException.
Den Quelltext habe ich aus einem Buch "Android 3" und auf meine Bedürfnisse angepasst. Dabei ist mir wohl ein Fehler passiert, denn das Originalprogramm läuft fehlerfrei.
Der Nullpointerexception sagt doch aus, dass eine Referenz auf Null erfolgt, also ins leere.Wieso ist
openhandler.insert(datum);
nicht initialisiert?
Für Tipps und Hinweise von Euch bin ich sehr dankbar.
Bis dann ...
Günter
package my.app.gesundheit;
import android.app.Activity;
import android.os.Bundle;
import android.widget.Button;
import android.view.View;
import android.widget.Toast;
import android.widget.EditText;
import android.widget.DatePicker;
public class Gewicht_00_Erf_Activity extends Activity {
/** Called when the activity is first created. */
private GesundheitOpenHandler openhandler;
private Button btnGewErfSave;
private Button btnGewErfBack;
private String day;
public String month;
private String year;
public String datum;
private String text;
private EditText ausgabe;
public Float gewicht;
public Integer monat;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.gewicht_00_erf);
btnGewErfBack = (Button)findViewById(R.id.btnGewErfBack);
btnGewErfBack.setText(R.string.zurueck);
btnGewErfBack.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
Gewicht_00_Erf_Activity.this.finish();
}
});
btnGewErfSave = (Button)findViewById(R.id.btnGewErfSave) ;
btnGewErfSave.setText(R.string.speichern);
btnGewErfSave.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
// Gewicht auslesen
ausgabe = (EditText)findViewById(R.id.txtGew);
text = ausgabe.getText().toString();
//DisplayToast(text);
gewicht = Float.valueOf(ausgabe.getText().toString());
// Datum auslesen
DatePicker datePicker = (DatePicker) findViewById(R.id.datePicker1);
if (datePicker.getDayOfMonth() < 10)
{
day = "0" + Integer.toString(datePicker.getDayOfMonth());
}
else
{
day = Integer.toString(datePicker.getDayOfMonth());
}
if ((datePicker.getMonth() + 1) < 10)
{
month = "0" + Integer.toString(datePicker.getMonth() + 1);
}
else
{
month = Integer.toString(datePicker.getMonth() + 1);
}
year = Integer.toString(datePicker.getYear());
datum = year + "-" + month + "-" + day;
DisplayToast(text + " " + datum);
// Übergabe an GesundheitOpenHandler
//openhandler.insert(datum, month, 23, gewicht);
openhandler.insert(datum);
}
});
}
private void DisplayToast(String msg) {
Toast.makeText(getBaseContext(), msg, Toast.LENGTH_SHORT).show();
}
}
Alles anzeigen
[code=java]
package my.app.gesundheit;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteException;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
public class GesundheitOpenHandler extends SQLiteOpenHelper {
private static final String TAG = GesundheitOpenHandler.class.getSimpleName();
// Name und Version der Datenbank
private static final String DATABASE_NAME = "gesundheit.db";
private static final int DATABASE_Version = 1;
// Name und Attrubute der Tabelle "tbl_gewicht"
public static final String TABLE_NAME_GEW = "tbl_gewicht";
public static final String _ID = "_id";
public static final String GEW_Datum = "gew_datum";
public static final String GEW_Monat = "gew_monat";
public static final String GEW_KW = "gew_kw";
public static final String GEW_GEW = "gew_gewicht";
// Tabelle tbl_gewicht anlegen
private static final String TABLE_GEW_CREATE = "CREATE TABLE "
+ TABLE_NAME_GEW + " (" + _ID
+ " INTEGER PRIMARY KEY AUTOINCREMENT, "
+ GEW_Datum + " STRING, "
+ GEW_Monat + " INTEGER, "
+ GEW_KW + " INTEGER, "
+ GEW_GEW + " FLOAT);";
// Tabelle tbl_gewicht löschen
private static final String TABLE_GEW_DROP = "DROP TABLE IF EXISTS "
+ TABLE_NAME_GEW + " ;";
GesundheitOpenHandler(Context context) {
super(context, DATABASE_NAME, null, DATABASE_Version);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(TABLE_GEW_CREATE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
Log.w(TAG, "Upgrade der Datenbank von Version " + oldVersion + " zu " + newVersion + "alle Daten werden gelöscht");
db.execSQL(TABLE_GEW_DROP);
onCreate(db);
}
//public void insert(String datum, String month, int gew_kw, float gewicht) {
public void insert(String datum) {
long rowId = -1;
try {
// Datenbank öffnen
SQLiteDatabase db = getWritableDatabase();
// die zu speichernden Werte
ContentValues values = new ContentValues();
values.put(GEW_Datum,datum);
/*values.put(GEW_Monat,month);
values.put(GEW_KW,gew_kw);
values.put(GEW_GEW,gewicht);*/
// In die Tabelle tbl_gewicht einfügen
rowId = db.insert(TABLE_NAME_GEW, null, values);
} catch (SQLiteException e) {
Log.e(TAG, "insert()", e);
} finally {
Log.d(TAG, "insert(): rowID=" + rowId);
}
}
public Cursor query(){
// ggf. Datenbank öffnen
SQLiteDatabase db = getWritableDatabase();
return db.query(TABLE_NAME_GEW, null, null, null, null, null, GEW_Datum + " DESC");
}
public void update(long id ){
}
public void delete(long id) {
// ggf. Datenbank öffnen
SQLiteDatabase db = getWritableDatabase();
int numDeleted = db.delete(TABLE_NAME_GEW,_ID + " = ?", new String[] {Long.toString(id)});
Log.d(TAG, "delete(): id=" + id + " -> " + numDeleted);
}
}
Alles anzeigen
[/code]