2012-11-08 31 views
0

我的應用程序拋出一個錯誤:嘗試重新查找已關閉的光標 - 出現了什麼問題?

11-08 17:19:40.800: E/AndroidRuntime(18592): java.lang.RuntimeException: Unable to resume activity {app.piotrek.learning/app.piotrek.learning.AddNewQuestion}: java.lang.IllegalStateException: trying to requery an already closed cursor [email protected] 
11-08 17:19:40.800: E/AndroidRuntime(18592): at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2567) 
11-08 17:19:40.800: E/AndroidRuntime(18592): at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2595) 
11-08 17:19:40.800: E/AndroidRuntime(18592): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1183) 
11-08 17:19:40.800: E/AndroidRuntime(18592): at android.os.Handler.dispatchMessage(Handler.java:99) 
11-08 17:19:40.800: E/AndroidRuntime(18592): at android.os.Looper.loop(Looper.java:137) 
11-08 17:19:40.800: E/AndroidRuntime(18592): at android.app.ActivityThread.main(ActivityThread.java:4575) 
11-08 17:19:40.800: E/AndroidRuntime(18592): at java.lang.reflect.Method.invokeNative(Native Method) 
11-08 17:19:40.800: E/AndroidRuntime(18592): at java.lang.reflect.Method.invoke(Method.java:511) 
11-08 17:19:40.800: E/AndroidRuntime(18592): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789) 
11-08 17:19:40.800: E/AndroidRuntime(18592): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:556) 
11-08 17:19:40.800: E/AndroidRuntime(18592): at dalvik.system.NativeStart.main(Native Method) 
11-08 17:19:40.800: E/AndroidRuntime(18592): Caused by: java.lang.IllegalStateException: trying to requery an already closed cursor [email protected] 
11-08 17:19:40.800: E/AndroidRuntime(18592): at android.app.Activity.performRestart(Activity.java:4508) 
11-08 17:19:40.800: E/AndroidRuntime(18592): at android.app.Activity.performResume(Activity.java:4531) 
11-08 17:19:40.800: E/AndroidRuntime(18592): at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2557) 
11-08 17:19:40.800: E/AndroidRuntime(18592): ... 10 more 

錯誤似乎表明了,當我去到另一個活動,我點擊「返回」按鈕。 我已經發現了這個問題是在這裏某處:

@Override 
protected void onResume(){ 
    super.onResume(); 

    db = new Database(getApplicationContext()); 

    db.open(); 

    fillSpinner(db.getAllEntriesSubjects(), spinnerSubject, DatabaseData.KEY_NAME); 
    //long data = spinnerSubject.getSelectedItemId(); 
    //Log.v("ADDNEWQUESTION", "Wybrano: " + data); 
    //fillSpinner(db.getAllEntriesTitles(), spinnerTitles); 
    db.close(); 
} 

public void fillSpinner(Cursor cs, Spinner spinner, String dane){ 
    startManagingCursor(cs); 

    SimpleCursorAdapter mAdapter = new SimpleCursorAdapter(this, android.R.layout.simple_spinner_item, cs, new String[] {dane}, new int[] {android.R.id.text1}); 
    mAdapter.setDropDownViewResource(android.R.layout.simple_spinner_item); 
    spinner.setAdapter(mAdapter); 
} 

據我所知,我不關閉任何光標。那怎麼了?

回答

0

onResume方法中刪除db.close();並將其添加到onPause()方法。 希望它有幫助。

+0

不幸的是,沒有:( – Piotrek

+0

所以,我應該怎麼如果我想攻 「返回」 按鈕後運行的onCreate()做?當我在另一個環境中時如何殺死Activity? – Piotrek

+0

你不應該殺死你的活動,最好把必要的代碼移動到onStart()或onResume()上來殺死一個Activity use finish()方法。 – sabadow

0

試試這個..

公共無效onBackPressed(){

Intent i = new Intent(getApplicationContext(), AddNewQuestion.class); 
    startActivity(i); 
    finish(); 
    super.onStop(); 

} 
相關問題