2013-07-29 42 views
1

只是想了解爲什麼:的Android SQLiteDatabase查詢可能產生NPE

db = databaseHandler.getReadableDatabase(); 

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

在上面的代碼片段的大寫變量顯然是靜態的決賽。 Android工作室告訴我

「此檢查根據代碼的數據流分析報告指定檢查範圍內始終爲真或假的條件,並指出可能拋出RuntimeException的情況。檢查還會報告Nullable/NotNull違反合約,可以配置支持合約的註解(默認@nullable/@NotNull將使用來自annotations.jar的註釋)「

這對我來說很粗魯。有人可以解釋嗎?

回答

1

該工具試圖幫助您找到可能發生錯誤的地方。 在這種特殊情況下,它會抱怨您使用的每個地方null,並且無法證明這種用法是允許的。

但是,documentation顯示null值確實允許用於這些參數,因此該工具正好是錯誤的。 此外,SQLiteDatabasequery方法是Android API的一部分,所以沒有任何藉口。考慮一下這個檢查器中的錯誤。

+0

非常感謝,這就是我在想什麼,但不想做一個noob級別的假設。 –

相關問題