我在从我的游标适配器类调用数据库类中的方法时遇到了一些问题。自定义游标类用于获取已勾选复选框的行的row_id。我已经退出了row_id,我的问题是调用数据库来删除该行。
我以一种我知道的方式调用数据库,因为我在其他活动中使用过它。该错误也是空指针错误。我知道什么是空指针错误,但我似乎无法弄清楚为什么我在这里得到一个。
只有在onCheckChanged
中删除方法时才会出现错误,如果我将row_id硬编码到函数中,请说bindView
函数正常工作。是否可以将Context传递给onCLickChanged
函数?
活动不会扩展活动的事实是否会产生影响?
初始化数据库类和上下文
private static Context context;
DBMain db = new DBMain(context);
onCheckedChange Method
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
int id = (Integer) buttonView.getTag();
db.deleteItem(id);
Toast toast = Toast.makeText(mContext, "Row " + id + " Pressed", Toast.LENGTH_SHORT);
toast.show();
}
}
数据库类
public boolean deleteItem(int id)
{
db = DBHelper.getWritableDatabase();
return db.delete(SHOPPING_TABLE, KEY_ID + "=\"" + id + "\"", null) > 0;
}
错误
java.lang.NullPointerException: Attempt to invoke virtual method 'android.database.sqlite.SQLiteDatabase android.content.Context.openOrCreateDatabase(java.lang.String, int, android.database.sqlite.SQLiteDatabase$CursorFactory, android.database.DatabaseErrorHandler)' on a null object reference
答案 0 :(得分:0)
移动私有静态Context上下文; 私有静态Context context = this;