2010-07-12 6 views
5

किसी ने मुझे बता सकते हैं मुझे समझा सकते हैं कि यह StaleDataExceptionकोई इस `StaleDataException`

07-11 19:58:23.298 E/AndroidRuntime(1044): Uncaught handler: thread main exiting due to uncaught exception 
07-11 19:58:23.368 E/AndroidRuntime(1044): android.database.StaleDataException: Access closed cursor 
07-11 19:58:23.368 E/AndroidRuntime(1044): at android.database.AbstractWindowedCursor.checkPosition(AbstractWindowedCursor.java:217) 
07-11 19:58:23.368 E/AndroidRuntime(1044): at android.database.AbstractWindowedCursor.getInt(AbstractWindowedCursor.java:84) 
07-11 19:58:23.368 E/AndroidRuntime(1044): at android.database.CursorWrapper.getInt(CursorWrapper.java:128) 

कब और कैसे हम कर्सर पर एक requiry को आश्वस्त करने की जरूरत है, और क्यों इस अपवाद के साथ विफल हो?

उत्तर

4

आप Cursor से जानकारी पुनर्प्राप्त करने का प्रयास कर रहे हैं जो पहले से ही बंद कर दिया गया है। isClosed विधि का उपयोग करके आपको यह सत्यापित करना होगा कि कर्सर बंद है या नहीं।

+0

क्या आप कृपया मुझे इस मुद्दे को ठीक करने का एक तरीका सुझा सकते हैं। वर्तमान में बहुत सारे staleDataException प्राप्त हो रहा है जिसे मैं इसे ठीक नहीं कर सका :( – Bytecode

1

आप कर्सर को तब तक बंद नहीं कर सकते जब तक कि कर्सर एडाप्टर की आवश्यकता नहीं होती है। तो तुम OnDestroy में इसे बंद कर सकते हैं() विधि:

@Override 
public void onDestroy() { 
super.onDestroy(); 

    //Close the cursor 
    cursor.close(); 
    //Close the database 
    database.close(); 
    } 
0

मेरे मामले में, मैं विधि onStop() में कर्सर को बंद किया गया था। यह पता चला कि स्क्रीन के घूर्णन इस कोड को चलाने के कारण थे और इसलिए StaleDataException दें।

0

Activity.managedQuery() के बजाय Activity.getContentResolver.query() का उपयोग करें। क्योंकि managedQuery() बहिष्कृत है। इससे मेरा काम बनता है।

संबंधित मुद्दे