0

我開發了一個使用API​​級別7的基於選項卡的應用程序。它使用Android 2.1設備運行良好。但是當我試圖在2.2設備上運行它的時候會產生問題。當我第一次訪問任何標籤時,它是可以的。但是,如果重新訪問相同的選項卡,則會顯示以下錯誤消息。Android高版本問題

android.database.sqlite.DatabaseObjectNotClosedException:應用程序沒有關閉在這裏

打開遊標或數據庫對象,但沒有這樣的問題,在2.1的設備。在這裏我想提一下,我已經關閉了任何選項卡的每個活動中的數據庫連接。

更令人驚訝的是,最初我在標籤A.對於標籤A我做了一些數據庫操作。然後我去B標籤沒有問題,數據庫操作也在同一個數據庫中完成。然後,如果我回到選項卡A,它會發出此錯誤。如果是數據庫和遊標關閉相關的問題,當我從標籤A到B時,它應該會出現異常。任何人都可以找到問題所在?

+0

您確定要關閉所有遊標嗎?在Activity中使用的遊標可以自動關閉,每次從數據庫返回一個遊標時調用startManagingCursor(Cursor)。在之前做空檢查(否則退出活動時會發生異常)。 –

+0

我已經在每次遊標操作後使用遊標關閉或者使用了call startManagingCursor(遊標)。另外遊標關閉問題也應該在2.1中上升。但在我看來,2.1中沒有問題。它只在2.2中給出概率。 –

+0

是的,這很奇怪,它只發生在2.2。你是否也確定你沒有打開數據庫連接兩次(以前沒有關閉它)?編輯:我看到你正在關閉連接。 –

回答

0

這不是所有標籤相關的概率。在onCreate()有一個代碼 -

datePickerDialog = new DatePickerDialog(getParent(), ButtonTestDateListener, 
       mYear, mMonth, mDay); 

我剛纔宣佈mYearmMonthmDay爲整數,但沒有初始化在那裏。它在2.1中工作正常,但在2.2中給出了概率。在此之前,我已經打開數據庫連接,並沒有關閉它。這就是爲什麼它給這樣的問題。