我知道這個問題在SO中已經問過很多次了,但我無法弄清楚我確切的問題。嘗試重新打開已關閉的對象:java.lang.IllegalStateException:?
我使用以下代碼從數據庫(表1)中獲取數據並根據檢索值更新另一個Table2。它在一些Android版本中工作正常,但是當我去測試Android 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);
}
什麼,我做錯了什麼?
我知道你們很多人遇到過這種情況。你能幫助我嗎?
感謝您的幫助。
也許你已經關閉了數據庫在異步任務之外。你檢查過嗎? – 2012-07-24 15:04:23
4.0.3是否比使用其他系統的系統運行得更快,如果是的話,您可能會發生一些競爭情況。 – 2012-07-24 15:07:26
不,我認爲那很好.. – GoCrazy 2012-07-24 15:07:58