私は目覚まし時計アプリケーションを持っており、すでに設定されているすべてのアラームを削除し、データベースからもすべてのレコードを削除するメソッドを作成しようとしています。
このメソッドを使用して、アラームを設定しているときに保留中のインテントの 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 の保留中のインテントをキャンセルします。