我想從我的數據庫中讀取一個文本列,然後進行更新。 我創建瞭如下兩種方法:在SQLite中讀寫單列Android
public boolean editNote(Lesson lesson) {
ContentValues values = new ContentValues();
values.put(LessonsDBOpenHelper.COLUMN_NOTE, lesson.getNote());
String where = LessonsDBOpenHelper.COLUMN_ID + "=" + lesson.getId();
int result = database.update(LessonsDBOpenHelper.TABLE_LESSONS, values, where, null);
return (result == 1);
}
和
public String readNote(Lesson lesson) {
String query = "SELECT * FROM lessons " +
"WHERE lessonId =" +lesson.getId();
Cursor cursor = database.rawQuery(query, null);
String returnString = ""; // default value if nothing is found
if (cursor.moveToFirst()){
returnString = cursor.getString(cursor.getColumnIndex(LessonsDBOpenHelper.COLUMN_NOTE));
}
cursor.close();
return returnString;
}
,然後我從另一個調用活動editNote()和讀取注()方法是這樣的:
public class Note extends Activity {
private static final String LOGTAG = "MYAPP";
Lesson lesson;
LessonsDataSource datasource;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.edit_note);
Bundle b = getIntent().getExtras();
lesson = b.getParcelable(".model.Lesson");
Button noteSave = (Button) findViewById(R.id.note_save);
Button noteClear = (Button) findViewById(R.id.note_clear);
final TextView noteText = (TextView) findViewById(R.id.noteText);
String dbNote = datasource.readNote(lesson);
noteText.setText(dbNote);
Log.i(LOGTAG, "Note loaded from DB is "+dbNote);
noteClear.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
noteText.setText("");
lesson.setNote("");
datasource.editNote(lesson);
}
});
noteSave.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String note = noteText.getText().toString();
lesson.setNote(note);
datasource.editNote(lesson);
Log.i(LOGTAG, "Note text changed to "+note);
String dbNote = datasource.readNote(lesson);
Log.i(LOGTAG, "Note text in DB is "+dbNote);
}
});
}
}
但我的應用程序當它讀取注或editNote方法時崩潰。 我在做什麼錯?
我只想閱讀並更新我的數據庫中提交的文本。
編輯: 這裏是logcat的:
01-30 02:47:29.809: D/AndroidRuntime(30850): Shutting down VM
01-30 02:47:29.809: W/dalvikvm(30850): threadid=1: thread exiting with uncaught exception (group=0x41744ba8)
01-30 02:47:29.809: E/AndroidRuntime(30850): FATAL EXCEPTION: main
01-30 02:47:29.809: E/AndroidRuntime(30850): Process: com.me.linux, PID: 30850
01-30 02:47:29.809: E/AndroidRuntime(30850): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.me.linux/com.me.linux.Note}: java.lang.NullPointerException
01-30 02:47:29.809: E/AndroidRuntime(30850): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195)
01-30 02:47:29.809: E/AndroidRuntime(30850): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
01-30 02:47:29.809: E/AndroidRuntime(30850): at android.app.ActivityThread.access$800(ActivityThread.java:135)
01-30 02:47:29.809: E/AndroidRuntime(30850): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
01-30 02:47:29.809: E/AndroidRuntime(30850): at android.os.Handler.dispatchMessage(Handler.java:102)
01-30 02:47:29.809: E/AndroidRuntime(30850): at android.os.Looper.loop(Looper.java:136)
01-30 02:47:29.809: E/AndroidRuntime(30850): at android.app.ActivityThread.main(ActivityThread.java:5017)
01-30 02:47:29.809: E/AndroidRuntime(30850): at java.lang.reflect.Method.invokeNative(Native Method)
01-30 02:47:29.809: E/AndroidRuntime(30850): at java.lang.reflect.Method.invoke(Method.java:515)
01-30 02:47:29.809: E/AndroidRuntime(30850): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
01-30 02:47:29.809: E/AndroidRuntime(30850): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
01-30 02:47:29.809: E/AndroidRuntime(30850): at dalvik.system.NativeStart.main(Native Method)
01-30 02:47:29.809: E/AndroidRuntime(30850): Caused by: java.lang.NullPointerException
01-30 02:47:29.809: E/AndroidRuntime(30850): at com.me.linux.Note.onCreate(Note.java:31)
01-30 02:47:29.809: E/AndroidRuntime(30850): at android.app.Activity.performCreate(Activity.java:5231)
01-30 02:47:29.809: E/AndroidRuntime(30850): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
01-30 02:47:29.809: E/AndroidRuntime(30850): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)
01-30 02:47:29.809: E/AndroidRuntime(30850): ... 11 more
01-30 02:59:51.589: I/MYAPP(31030): Database closed
編輯2: 這裏是意圖putExtra的代碼,啓動此活動:
case R.id.action_edit_note:
Intent intent = new Intent(this, Note.class);
intent.putExtra(".model.Lesson", lesson);
startActivityForResult(intent, 1002);
break;
崩潰? logcat在哪裏? – mt0s
我從問題開始的地方添加了LogCat。 –