我有一个闹钟应用程序,我正在尝试制作一种方法来删除所有已设置的闹钟并从数据库中删除所有记录。
使用这种方法,我在设置警报时检索我的 RequestCode 以获取待处理的意图:
public static void CursorRQ() {
Cursor cursor;
Integer cursorRQ;
cursor = DatabaseManager.getAllData();
cursor.moveToFirst();
if (!cursor.isAfterLast()) {
do {
cursorRQ = cursor.getInt(0);
if (cursorRQ >= RQ) {
RQ = RQ + 1;
}
}
while (cursor.moveToNext());
}
cursor.close();
}
现在,取消并且一切正常,直到我删除数据库表:
public static void deleteAll() {
db.delete(TABLE_NAME, null, null);
}
当我开始设置新的闹钟时。他们设置了正确的请求代码(从 1 开始),然后为每个新警报 +1,但是当我再次尝试取消所有警报时,使用此方法:
Cursor cursor = DatabaseManager.getAllData();
cursor.moveToFirst();
int IDRQ = cursor.getInt(0);
while(cursor.moveToNext()) {
IDRQ = cursor.getInt(0);
}
用起始数字填充光标,就好像我从未从数据库中删除过这些值一样。
例如,我设置了 3 个警报,它们得到请求代码 1、2、3。我将它们全部删除,它们被完全删除并取消,然后我设置了新警报,它们再次设置为 1、2、3,但是当我取消它们时,该方法取消了请求编号为 4、5、6 的待处理意图,就好像我从未删除过记录一样。