@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

Reply via email to