我有一个从我的个人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