我一直收到此错误
07-19 14:24:50.840: ERROR/AndroidRuntime(1512): java.lang.NullPointerException
07-19 14:24:50.840: ERROR/AndroidRuntime(1512): at com.fttech.organizeit.TaskHelper.createLunch(TaskHelper.java:76)
07-19 14:24:50.840: ERROR/AndroidRuntime(1512): at com.fttech.organizeit.TaskDetails.saveState(TaskDetails.java:260)
这是我的createLunch()
}
public long createTask(String title, String descrip, String type, String taskdatetime){
ContentValues initialValues = new ContentValues();
initialValues.put(KEY_TITLE, title);
initialValues.put(KEY_DESCRIP, descrip);
initialValues.put(KEY_TYPE, type);
initialValues.put(KEY_DATE_TIME, taskdatetime);
return mDb.insert(DATABASE_TABLE, null, initialValues);
}
它在saveState之前的createLunch中给出了一个错误,所以我很确定错误就在这里。它指出了我的回复声明。我只是不明白问题是什么。
我看到lob.v被保存在这里。但不适用于插入数据库。我认为错误就在这里
Log.v(title, "saved");
SimpleDateFormat dateTimeFormat = new SimpleDateFormat(DATE_TIME_FORMAT);
String taskdatetime = dateTimeFormat.format(mCalendar.getTime());
if(taskId == null){
long id = helper.createTask(title, descrip, type, taskdatetime);
Log.v(taskdatetime, "Inserted into databse");
if(id >0){
taskId = id;
}
}
else{
helper.updateTask(taskId, title, descrip, type, taskdatetime);
}
finish();
}
}
public void fillData(){
helper.open();
Cursor task = helper.fetchAllTask();
startManagingCursor(task);
String[] from = new String[]{TaskHelper.KEY_TITLE};
int[] to = new int[]{R.layout.row};
SimpleCursorAdapter taskAdapter = new SimpleCursorAdapter(this, R.layout.list, task, from , to);
setListAdapter(taskAdapter);
}
答案 0 :(得分:1)
耀,
从代码中跳出来的唯一东西就是mDB对象。你有没有在课堂上的其他地方宣布它。如果没有,那那就是你的问题。如果是这样,第76行是什么。你能发帖吗。
如果您需要它。这是一段声明Mdb的代码片段:
private static class DatabaseHelper extends SQLiteOpenHelper{
DatabaseHelper (Context context) {
super(context, DBConstants.DATABASE_NAME, null, DBConstants.DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db)
{
//db.execSQL(DBConstants.TABLE_CREATE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVerison)
{
//db.execSQL(DATABASE_UPGRADE);
}
}
//Open the data base. It will either create or upgrade the database
public DbAdpt open() throws android.database.SQLException {
mDbHelper = new DatabaseHelper(mCtx);
mDb = mDbHelper.getWritableDatabase();
return this;
}
希望这有帮助, 乔治
答案 1 :(得分:1)
你的mDB是否为空?试试这个,看看你的id是否以-1返回
public long createTask(String title, String descrip, String type, String taskdatetime){
ContentValues initialValues = new ContentValues();
initialValues.put(KEY_TITLE, title);
initialValues.put(KEY_DESCRIP, descrip);
initialValues.put(KEY_TYPE, type);
initialValues.put(KEY_DATE_TIME, taskdatetime);
long lResult=-1;
if(mDB!=null)
lResult = mDb.insert(DATABASE_TABLE, null, initialValues);
}
return lResult;
}
<强>更新强>
您应该通过调用DatabaseHelper类的getWriteableDatabase方法来打开您的数据库,该方法应该扩展SQLiteOpenHelper。
mDB = myDataBaseHelper.getWritableDatabase()
您应该检查调用createTask
的结果 if(id >0){
Log.v(taskdatetime, "Inserted into databse");
taskId = id;
}
else
{
Log.v(taskdatetime, "Insert failed");
}