SQLite
 sql >> डेटाबेस >  >> RDS >> SQLite

एंड्रॉइड - पहले से बंद ऑब्जेक्ट को फिर से खोलने का प्रयास:SQLiteQuery लोडर मैनेजर का उपयोग कर

खराब फ़ॉर्मेटिंग के कारण आपका कोड समझना थोड़ा कठिन है।

वैसे भी, आपूर्ति किया गया उत्तर वास्तव में ठीक नहीं है। कर्सर onLoadFinished . पर लौटा बंद नहीं होने की गारंटी दी जानी चाहिए, इसलिए आप अपना कर्सर गलत तरीके से लोड कर रहे हैं। विशेष रूप से, जब आप कॉल करते हैं

adapter.getFilter().filter(s.toString());

मैं वास्तव में नहीं समझता कि यहाँ क्या हो रहा है, लेकिन मैं समझता हूँ कि आपको कुछ और करना चाहिए। बस क्वेरी फ़िल्टर को अपने Fragment . के भीतर एक फ़ील्ड में संग्रहित करें और getLoaderManager().restartLoader(DRINKS_LIST_LOADER, null, this); . ध्यान दें कि आप restartLoader चलाते हैं , और नहीं initLoader , क्योंकि आपके पास अलग डेटा है जिसके लिए आप क्वेरी करना चाहते हैं।

आपके onCreateLoader . में , आपको उस फ़िल्टर का उपयोग करना चाहिए जिसे आपने selection . के लिए एक आवृत्ति चर के रूप में संग्रहीत किया है ।

कुछ पृष्ठभूमि

initLoader पिछले रन में लोड किए गए डेटा को लोड करता है, अगर यह पहले चला था। यही कारण है कि आप अपने टुकड़े/गतिविधि की प्रारंभिक विधि में कॉल करते हैं। यह आसान है क्योंकि आपको अभिविन्यास परिवर्तन पर अनुरोध करने की आवश्यकता नहीं होगी।

restartLoader पहले लोड किए गए डेटा को साफ़ करता है ताकि आपको एक नया Loader मिल सके (संभावित) भिन्न डेटा के साथ काम करने के लिए।

यदि आप वास्तव में सुनिश्चित नहीं हैं कि आप अभी भी क्या कर रहे हैं, तो इस आलेख को पढ़ना सुनिश्चित करें, जो नमूना कोड के साथ लोडर पर एक बहुत अच्छा प्रारंभिक आलेख है जो कि आप जो हासिल करना चाहते हैं उसके समान दिखता है। लोडर पहली बार में काफी गूढ़ होते हैं, लेकिन एक बार जब आप इसे समझ लेते हैं तो यह सहज नौकायन होता है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. एंड्रॉइड SQLite:परीक्षण उद्देश्य के लिए बड़ी तालिका कैसे उत्पन्न करें?

  2. SQLite डेटाबेस को XML फ़ाइल में निर्यात करें

  3. SQLite दृश्य बनाएँ

  4. SQLite में PRAGMA तालिका_सूची

  5. एक खाली SQLite डेटाबेस कैसे बनाएं