Android SQLiteDatabase 查询可能会产生 NPE

标签 android sqlite android-sqlite android-studio

只是想了解原因:

    db = databaseHandler.getReadableDatabase();

    String[] columns = {ID, NAME, DIFFICULTY};
    Cursor cursor = db.query(TABLE_NAME, columns, null, null, null, null, DIFFICULTY);

上面代码 fragment 中的大写变量显然是静态的final。 Android Studio 告诉我

“该检查根据代码的数据流分析,报告指定检查范围内始终为真或假的条件,并指出可能抛出 RuntimeException 的位置。该检查还报告 Nullable/NotNull 契约违反。可以配置支持契约(Contract)的注释(默认情况下将使用 annotations.jar 中的 @Nullable/@NotNull 注释)”

这对我来说是胡言乱语。谁能解释一下?

最佳答案

该工具试图帮助您找到可能发生错误的地方。 在这种特殊情况下,它会提示您使用 null 的每个地方以及它无法证明允许这种用法的地方。

然而,documentation显示这些参数确实允许 null 值,因此该工具是错误的。 此外,SQLiteDatabasequery 方法是Android API 的一部分,因此没有借口。将此视为检查器中的错误。

关于Android SQLiteDatabase 查询可能会产生 NPE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17915890/

相关文章:

android - 在 Android 上,如何以编程方式切换 Activity ?

database - 使用 vb.net 打开 sqlite "Temporary"数据库的确切语法是什么

android - 如何在房间持久性库中插入图像?

android - 安全 sqlite 数据库 : Android

android - 为什么 SQLiteOpenHelper 会删除 "onUpgrade"方法中的表?

android - 无法完成 Activity

android - 如何从 URL 播放视频?

机器人 : using Tab view with dynamic fragment

android - SQLite:根据ORDER语句选择具有特定ID的行周围的X条记录

qt - 如何在 QML (Qt) 上将 SQLite BLOB 数据显示为图像?