@andfan22 - I am seeing the same thing. I've been able to get past it, but only by comment out all code using FilterQueryProvider. I've tried all I can think of to manage the lifecycle, but can't get it right. Are you using FilterQueryProvider? I see that they are mapping the 2.x calls into 3.0 calls, since I've seen CursorLoader in my stacktrace.
@Zsolt - maybe, but not a helpful comment. Why even bother? On Feb 23, 5:26 pm, andfan22 <[email protected]> wrote: > I have an app that works fine on all recent versions of android up to > and including gingerbread. When testing on honeycomb however, I'm > getting the following exception when restarting an activity that uses > managed cursors. > > FATAL EXCEPTION: main > java.lang.RuntimeException: Unable to resume activity {com.xxxxx.MyApp/ > xxxxx.MyApp.MyActivity}: java.lang.IllegalStateException: trying to > requery an already closed cursor > at > android.app.ActivityThread.performResumeActivity(ActivityThread.java: > 2215) > at > android.app.ActivityThread.handleResumeActivity(ActivityThread.java: > 2243) > at android.app.ActivityThread$H.handleMessage(ActivityThread.java: > 1019) > at android.os.Handler.dispatchMessage(Handler.java:99) > at android.os.Looper.loop(Looper.java:126) > at android.app.ActivityThread.main(ActivityThread.java:3997) > at java.lang.reflect.Method.invokeNative(Native Method) > at java.lang.reflect.Method.invoke(Method.java:491) > at com.android.internal.os.ZygoteInit > $MethodAndArgsCaller.run(ZygoteInit.java:841) > at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599) > at dalvik.system.NativeStart.main(Native Method) > Caused by: java.lang.IllegalStateException: trying to requery an > already closed cursor > at android.app.Activity.performRestart(Activity.java:4343) > at > android.app.ActivityThread.performRestartActivity(ActivityThread.java: > 2640) > at > android.app.LocalActivityManager.moveToState(LocalActivityManager.java: > 163) > at > android.app.LocalActivityManager.dispatchResume(LocalActivityManager.java: > 518) > at android.app.ActivityGroup.onResume(ActivityGroup.java:58) > at xxxxx.MyApp.MyActivity.onResume(MyActivity.java:57) > at > android.app.Instrumentation.callActivityOnResume(Instrumentation.java: > 1153) > at android.app.Activity.performResume(Activity.java:4374) > at > android.app.ActivityThread.performResumeActivity(ActivityThread.java: > 2205) > ... 10 more > > Has anybody else come across this? I realise that the Activity > methods for cursor management (managedQuery, startManagingCursor and > stopManagingCursor) have been deprecated in honeycomb in favour of the > new CursorLoader class, but I would have expected backward > compatibility to be preserved. > > The specific details for replicating the issue are: > The main activity is a tabbed activity, with tab content provided by > sub-activities. One of the sub activities is an > ExpandableListActivity with data provided by cursors (one cursor for > the group list, another for children). Initially all groups are > collapsed. If I open a new activity (eg Settings via a menu option) > while viewing this tab before expanding any groups, then exit the new > activity returning to the tab with the collapsed groups, everything is > fine. If, however, I expand one or more of the groups before opening > a new activity, then when I return the above exception is triggered. > Interestingly, if I expand a group then collapse it again, then launch > a new activity with all groups collapsed, the exception *is* > triggered. The mere fact that a group was expanded (even if > subsequently collapsed) is enough to trigger the "trying to requery an > already closed cursor" exception during restart of the main activity. > Note: the issue is NOT triggered by merely triggering the pause/resume > activity lifecycle methods. It only happens if the main activity is > stopped and restarted (calling onRestart(), onStart() and then > onResume()). > > Does anyone know what is likely to be causing this and if an easy fix > is available? I would prefer not to refactor my code to use the new > CursorLoader framework as my app needs to work on pre-honeycomb > versions. To use the new API would mean doing so via reflection -- I > don't want to go there if I can help it. > > Thanks in advance ... -- You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/android-developers?hl=en

