具体报的错误:
java.lang.NullPointerException: Attempt to invoke virtual method 'int android.database.sqlite.SQLiteDatabase.delete(java.lang.String, java.lang.String, java.lang.String[])' on a null object reference
通过调用数据库中的删除方法,删除下载管理中的声音文件。
但是调试的时候发现BUG,点击声音文件,进到下一个页面之后,再返回本页面,删除该声音文件时就报错误。
之后查找资料才知道,Android sqlite数据库不支持同时读写,如果需要多个一起同时进行读写数据库的话,就需要用多个实例化的mHelper
@Override public boolean OnMItemLongClick(AdapterView<?> parent, View view, final int position, long id) { try { //重写实例化数据库,获得数据库帮助器的实例 mHelper = UserDownDBHelper.getInstance(this, 1); mHelper.openReadLink(); final UserDown info = userDowns.get(position); DialogD dialog = new DialogD(AppsettingDownloadActivity.this); dialog.setTitle("删除"); dialog.setMessage("是否删除" + userDowns.get(position).FileName + "?"); dialog.setCancel("取消", new DialogD.OnCancelListener() { @Override public void onCancel(DialogD dialog) { } }); dialog.setConfirm("确认", new DialogD.OnConfirmListener() { @Override public void onConfirm(DialogD dialog) { userDowns.remove(position); mHelper.delete("FileName='" + info.FileName + "'"); mAdapter.notifyDataSetChanged(); } }); dialog.show(); } catch (Exception e) { e.printStackTrace(); } return true; }
这样问题解决了,希望能帮助到遇到此问题的网友~