मुझे पता है कि इस सवाल ने SO में कई बार पूछा है, लेकिन मैं अपनी सटीक समस्या का पता नहीं लगा सका।पहले से बंद ऑब्जेक्ट को फिर से खोलने का प्रयास: java.lang.IleglegalStateException :?
मैं डेटाबेस से डेटा प्राप्त करने के लिए निम्न कोड का उपयोग कर रहा हूं (तालिका 1) और पुनर्प्राप्ति मूल्य के आधार पर एक और तालिका 2 अपडेट करें। कुछ एंड्रॉइड संस्करणों में यह ठीक काम कर रहा है, लेकिन जब मैं एंड्रॉइड 4.0.3 के साथ परीक्षण करने गया। मुझे यह java.lang.IllegalStateException:?.attempt to re-open an already-closed object
sum_cursor.moveToNext();
पर मिल रहा है।
मैं इस कोड का उपयोग AsyncTask में कर रहा हूं।
/** Sum of total matched values*/
Cursor sum_cursor = db.gettotalMatchvalue(this);
if(sum_cursor!=null)
{
sum_cursor.moveToFirst();
for(int j=0; j<sum_cursor.getCount();j++)
{
float totalmatchedscore = sum_cursor.getInt(0);
float totalingredients = Float.parseFloat(sum_cursor.getString(sum_cursor.getColumnIndex(APPDatabase.CK_TOTALINCREDIENTS)));
/**average = totalscore/totalingredients*/
double average = totalmatchedscore/totalingredients;
int id = Integer.parseInt(sum_cursor.getString(sum_cursor.getColumnIndex(APPDatabase.CK_ID)));
db.updateAverage(id, average);
sum_cursor.moveToNext(); //Here is the problem
}
}
db.close();
मेरे अद्यतन विधि
/** Update average */
public void updateAverage(int id,double average)
{
SQLiteDatabase db = getWritableDatabase();
ContentValues values = new ContentValues();
values.put(CK_FINALVALUE,average);
db.update(TABLE, values,CK_ID+" = "+id , null);
}
कोडिंग क्या मैं गलत यहाँ कर रहा हूँ?
मुझे पता है कि आप में से कई इस स्थिति में आते हैं। क्या आप मेरी मदद कर सकते हैं।
आपकी मदद के लिए धन्यवाद।
शायद तुम बंद कर दिया है async कार्य के बाहर डेटाबेस। क्या आपने इसके लिए जांच की है? –
वह सिस्टम है जो 4.0.3 आपके द्वारा उपयोग की जा रही अन्य प्रणालियों की तुलना में किसी भी तेजी से चल रहा है, यदि ऐसा है तो आप कुछ दौड़ की स्थिति हो सकती हैं। –
नहीं, मुझे लगता है कि ठीक है .. – GoCrazy