Just to finish this off, here is what I've learned now that I have it
working properly.

First, dismissDialog() in onDestroy() does not dismiss the dialog.  I
have to do it in onSaveInstanceState().  If I do it in onDestroy() and
I try to recreate it in onCreate() with showDialog() -- after
recreating the dynamic data it needs -- I get two dialog windows: one
that's broken (empty dynamic data) and one that's good.

Second, if I do nothing at all, onPrepareDialog() is not called on the
active dialog after the config change.  So simply recreating the data
it needs does nothing.  I just displays the empty dialog.

It all works perfectly when I do a dismissDialog() in
onSaveInstanceState(), save the dialog id in the bundle, pull it back
out in onCreate(), then create the data and call showDialog().  I
suppose it all makes some sort of sense although I do wish it were
more intuitive (and simpler).

Romain, Marco, thanks for the feedback.

On Mar 4, 12:13 pm, Nmix <nepean...@gmail.com> wrote:
> Ugh. I already use onCreateDialog() and onPrepareDialog() since that
> is how I deal with making the content dynamic.  I figured dismissing
> it (ok, I agree that's not quite a best practice), would be simplest,
> especially since in the context of the app it is very unlikely that
> the user would change config while it is showing.
>
> I'll try dismissing in onDestroy().  I hadn't done that since I wasn't
> sure that it'd be called on a config change.
>
> It also seems from your comment that onCreateDialog() and
> onPrepareDialog() do get called again sometime after onCreate().  If
> true, I hadn't realized that.  I may look into that later and see if I
> can refresh those dialogs.
>
> Thanks.
>
> On Mar 4, 11:42 am, Romain Guy <romain...@google.com> wrote:
>
> > If you want to call dismissDialog(int) you need to use managed
> > dialogs. You will need to look at the javadoc for showDialog(int),
> > onCreateDialog() and onPrepareDialog(). The API Demos also show how to
> > use managed dialogs.
>
> > If you are already using these APIs, onCreate() is not the right
> > placae to dismiss the dialog since it doesn't exist yet. You would
> > have to do this in onDestroy() for instance. Note that dismissing the
> > dialog on configuration change goes against the purpose of managed
> > dialogs :)
>
> > On Wed, Mar 4, 2009 at 8:37 AM, Nmix <nepean...@gmail.com> wrote:
>
> > > Flipping between landscape and portrait is causing me a problem with
> > > dialogs that are active at the time of config change.  The dialogs
> > > survive (which I think is good), but I have the problem that some of
> > > my dialogs contain dynamic content which would need to be refreshed in
> > > the dialog views.  All that content disappears from the dialog views
> > > after the config change.
>
> > > I thought it would be easier to do a dismissDialog() on restoration in
> > > onCreate(), letting the user press the button that shows the dialog.
> > > I successfully save and recover the dialog id, but when I attempt to
> > > dismissDialog(id) I get an IllegalArgumentException: no dialog with id
> > > 1 was ever shown via Activity$showDialog.
>
> > > Ok, so that doesn't work, and I still have that messed up dialog up on
> > > the screen that I want to get rid of.  How can I do that?  Are there
> > > any other reasonable alternatives?  Thanks.
>
> > --
> > Romain Guy
> > Android framework engineer
> > romain...@android.com
>
> > Note: please don't send private questions to me, as I don't have time
> > to provide private support.  All such questions should be posted on
> > public forums, where I and others can see and answer them
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers-unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to