我有一個從我的個人SQLite數據庫填充的列表視圖,該數據庫顯示有關事件的信息。我正嘗試使用事件描述頁面上的複選框來創建一種「最喜歡」此事件的方式。代碼將嘗試更新數據庫,當用戶選中複選框,然後啓動onPause()更新SQLite數據庫的問題
我查找了更新數據庫中的行的一些示例,但無論我嘗試什麼,我似乎總是卡住帶有NullPointerException。
讓我知道是否有任何其他代碼,你需要看看來幫助我解決這個問題。
下面是當用戶從描述活動移開,看看他們是否已經檢查的複選框,我調用代碼:
@Override
protected void onPause() {
super.onPause();
DataBaseHelper myDbHelper = new DataBaseHelper(this);
if (panelCheckBox.isChecked()) {
int mySchedule = 1;
myDbHelper.updateRow(mRowId, mySchedule);
}
,這裏是在DataBaseHelper
public void updateRow(long rowId, Integer mySchedule) {
if(mySchedule != null){
ContentValues args = new ContentValues();
args.put("mySchedule", mySchedule);
myDataBase.update(DATABASE_PANELS_TABLE, args, "_id=" + rowId, null);
}
}
的updateRow碼
以下是來自logcat的錯誤:
ERROR/AndroidRuntime(689): Uncaught handler: thread main exiting due to uncaught exception
ERROR/AndroidRuntime(689): java.lang.RuntimeException: Unable to pause activity {com.tagrost.AndroidConventionApp/com.tagrost.AndroidConventionApp.PanelDescActivity}: java.lang.NullPointerException
ERROR/AndroidRuntime(689): at android.app.ActivityThread.performPauseActivity(ActivityThread.java:3162)
ERROR/AndroidRuntime(689): at android.app.ActivityThread.performPauseActivity(ActivityThread.java:3119)
ERROR/AndroidRuntime(689): at android.app.ActivityThread.handlePauseActivity(ActivityThread.java:3102)
ERROR/AndroidRuntime(689): at android.app.ActivityThread.access$2400(ActivityThread.java:119)
ERROR/AndroidRuntime(689): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1874)
ERROR/AndroidRuntime(689): at android.os.Handler.dispatchMessage(Handler.java:99)
ERROR/AndroidRuntime(689): at android.os.Looper.loop(Looper.java:123)
ERROR/AndroidRuntime(689): at android.app.ActivityThread.main(ActivityThread.java:4363)
ERROR/AndroidRuntime(689): at java.lang.reflect.Method.invokeNative(Native Method)
ERROR/AndroidRuntime(689): at java.lang.reflect.Method.invoke(Method.java:521)
ERROR/AndroidRuntime(689): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860
ERROR/AndroidRuntime(689): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
ERROR/AndroidRuntime(689): at dalvik.system.NativeStart.main(Native Method)
ERROR/AndroidRuntime(689): Caused by: java.lang.NullPointerException
ERROR/AndroidRuntime(689): at com.tagrost.AndroidConventionApp.DataBaseHelper.updateRow(DataBaseHelper.java:198)
ERROR/AndroidRuntime(689): at com.tagrost.AndroidConventionApp.PanelDescActivity.onPause(PanelDescActivity.java:67)
ERROR/AndroidRuntime(689): at android.app.Activity.performPause(Activity.java:3782)
ERROR/AndroidRuntime(689): at android.app.Instrumentation.callActivityOnPause(Instrumentation.java:1190)
ERROR/AndroidRuntime(689): at android.app.ActivityThread.performPauseActivity(ActivityThread.java:3149)
'ERROR/AndroidRuntime(689):at com.tagrost.AndroidConventionApp.DataBaseHelper.updateRow(DataBaseHelper.java:198)'哪一行是198?這應該是問題所在。 – 2011-03-04 20:29:53
myDataBase.update(DATABASE_PANELS_TABLE,args,「_id =」+ rowId,null); – Tag 2011-03-04 20:34:31
更大的問題是,爲什麼數據庫更新與onPause有什麼關係?打開活動並保持活動狀態時打開數據庫。單擊複選框並更新數據庫。你是否嘗試使用onPause強制重繪? – jcwenger 2011-03-04 20:46:45