我有一种检查成就的方法,我正试图让它正常工作。它需要一个 String 并将其转换为 long ,然后检查数据库中的 String 值(转换为 long )
这是代码:
public boolean checkAchievements(String timeString) {
long timeInt = Long.parseLong(timeString);
boolean newAchievement = false;
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.rawQuery("SELECT millis FROM records ORDER BY CAST(millis as SIGNED) DESC", null);
cursor.moveToFirst();
long topTime = Long.parseLong(cursor.getString(0));
cursor.close();
if (timeInt > topTime) {
db.rawQuery("update achievements set completed='yes' where name='Beat top record'", null);
newAchievement = true;
}
db.close();
return newAchievement;
}
ihetimeString
是从日历中抓取并从 long 转换为字符串的当前时间(以毫秒为单位)。我不知道为什么这个函数会一直返回 true,尤其是当我知道 timeInt 不大于 topTime 的事实时。
此外,即使这个函数正在返回true
,该更新查询甚至没有运行,因为我检查了数据库并且完成的值仍然是“no”,其中 name="Beat top record"。