What if you call setCancelable(false) on the dialog? Will it still
auto-dismiss?

I would assume not and then you could do what you're trying to do and call
cancel() manually when you're done validating.

-------------------------------------------------------------------------------------------------
TreKing - Chicago transit tracking app for Android-powered devices
http://sites.google.com/site/rezmobileapps/treking


On Fri, Nov 20, 2009 at 1:49 PM, Jason Proctor <
[email protected]> wrote:

> can't re-show the dialog in onClick(), because it's already shown. at
> least that was true with 1.1, i should check it with a later SDK.
>
> so either i do my validation in onDismiss(), or i get all fancy.
>
>
> >Just ran a quick test on my code and you're right! Sorry for the
> >wrong info. I've been manually calling dismiss() and cancel() on the
> >dialogs I use. It's been a while since I looked at that code and
> >figured I was doing that because I had to ... now this makes me
> >wonder why I did it that way to begin with =P.
> >
> >But you should still be able to do validation on the OK button being
> >clicked, and if that fails, just re-show the dialog.
> >
> >"as i can't schedule a reappearance of the dialog in the onClick()"
> >
> >
> >Why not? If you define your click handler inline within the activity
> >that's using it, you can just call showDialog(ID) in onClick(), no?
> >Or does that not work?
> >
>
> >-------------------------------------------------------------------------------------------------
> >TreKing - Chicago transit tracking app for Android-powered devices
> ><http://sites.google.com/site/rezmobileapps/treking>
> http://sites.google.com/site/rezmobileapps/treking
> >
> >On Fri, Nov 20, 2009 at 1:20 PM, Jason Proctor
> ><<mailto:[email protected]>[email protected]>
> >wrote:
> >
> >thanks for the response, most helpful.
> >
> >i don't actively dismiss the dialog at any point, therefore something
> >behind the button click must be doing it. i took a look in
> >android.internal.app.AlertController.java, and found that its click
> >listener calls the appropriate button handler, then sends a dismiss
> >message to the dialog. unless i'm missing something big, seems fairly
> >conclusive.
> >
> >so the reasons why i do it this convoluted way are coming back to me.
> >due to the auto-dismiss, i have to validate in the dismiss handler,
> >as i can't schedule a reappearance of the dialog in the onClick().
> >
> >i suppose i'll have to get all fancy and do the validation key by key,
> then.
> >
> >(the point remains that Android has the weirdest modal dialog
> >handling of any environment i've encountered!)
> >
> >thanks,
> >J
> >
> >
> >
> >>"when the dismiss listener fires, can i tell which button caused
> >>the dismiss?"
> >>
> >>No - I don't think any of the buttons by default cause the dialog to
> >>be dismissed. This happens when you call dismiss() or cancel() on
> >>the dialog or the user presses the back button.
> >>
> >>"so in the click listener, i set a member flag according to which
> >>button was clicked. then in the dismiss listener, i then check the
> >>flag to see whether to proceed or not"
> >>
> >>But you have set on click listeners for each of the two buttons you
> >>have, no? So why not handle their actions in their respective click
> >>listeners? What are you doing in each of those listeners (I'm going
> >>to bet you're dismissing the dialog after storing the flag...)?
> >>
> >>"the other issue i have with Android's dialogs is that if the
> >>contents fail validation and the dialog needs to be re-presented, i
> >>have to re-show it in the dismiss listener"
> >>
> >>No, you don't have to do this. In your listener for the OK button
> >>you can get the text field, validate it, and if it fails show a
> >>toast message, and don't dismiss the dialog. If it succeeds, do what
> >>you need to with the entered data and THEN call dismiss() on the
> >>dialog.
> >>
> >>If you want to get fancy you can also validate the user data as they
> >>type and disable and enable the OK button in response so they can
> >>only hit OK when they've entered valid data.
> >>
> >>Also, I highly doubt you need the dismiss listener in your case.
> >>Hope that helps.
> >>
>
> >>-------------------------------------------------------------------------------------------------
> >>TreKing - Chicago transit tracking app for Android-powered devices
> >
> >  ><<http://sites.google.com/site/rezmobileapps/treking>
> http://sites.google.com/site/rezmobileapps/treking><
> http://sites.google.com/site/rezmobileapps/treking>
> http://sites.google.com/site/rezmobileapps/treking
> >
> >  >
> >>On Thu, Nov 19, 2009 at 8:00 PM, Jason Proctor
> >
> >  ><<mailto:<mailto:[email protected]>
> [email protected]><mailto:[email protected]>
> [email protected]>
> >
> >  >wrote:
> >>
> >>i never look forward to handling Android dialogs, maybe someone can
> >>point me to a better way of doing it than i'm doing right now.
> >>
> >>say i have a dialog which has one text field in it, and OK and Cancel
> >>buttons. i make the dialog with AlertDialog.Builder, and set click
> >>listeners on the buttons and dismiss listener on the dialog.
> >>
> >>when the dismiss listener fires, can i tell which button caused the
> >>dismiss? i don't see how, so in the click listener, i set a member
> >>flag according to which button was clicked. then in the dismiss
> >>listener, i then check the flag to see whether to proceed or not. a
> >>rather backward process. am i missing something?
> >>
> >>the other issue i have with Android's dialogs is that if the contents
> >>fail validation and the dialog needs to be re-presented, i have to
> >>re-show it in the dismiss listener. in every other environment known
> >>to man, dialogs are (somewhat) modal, so the dialog stays up unless
> >>expressly dismissed by code. IMHO, the latter makes more sense.
> >>
> >>thanks for any help with this stuff,
> >>--
> >>jason.vp.engineering.particle
> >>
> >>--
> >>You received this message because you are subscribed to the Google
> >>Groups "Android Developers" group.
> >>To post to this group, send email to
> >
> >  ><mailto:<mailto:[email protected]>
> [email protected]><mailto:
> [email protected]>[email protected]
> >
> >  >To unsubscribe from this group, send email to
> >
> >  
> > ><mailto:<mailto:android-developers%[email protected]<android-developers%[email protected]>
> >android-developers%[email protected]<android-developers%[email protected]>
> ><mailto:android-developers%[email protected]<android-developers%[email protected]>
> >[email protected]<android-developers%[email protected]>
> >
> >  >For more options, visit this group at
> >
> >  ><<http://groups.google.com/group/android-developers?hl=en>
> http://groups.google.com/group/android-developers?hl=en><
> http://groups.google.com/group/android-developers?hl=en>
> http://groups.google.com/group/android-developers?hl=en
> >
> >  >
> >>
> >>--
> >>You received this message because you are subscribed to the Google
> >>Groups "Android Developers" group.
> >>To post to this group, send email to
> >><mailto:[email protected]>
> [email protected]
> >>To unsubscribe from this group, send email to
> >><mailto:android-developers%[email protected]<android-developers%[email protected]>
> >[email protected]<android-developers%[email protected]>
> >>For more options, visit this group at
> >
> >  ><<http://groups.google.com/group/android-developers?hl=en>
> http://groups.google.com/group/android-developers?hl=en><
> http://groups.google.com/group/android-developers?hl=en>
> http://groups.google.com/group/android-developers?hl=en
> >
> >
> >--
> >
> >jason.vp.engineering.particle
> >
> >--
> >You received this message because you are subscribed to the Google
> >Groups "Android Developers" group.
> >To post to this group, send email to
> ><mailto:[email protected]>
> [email protected]
> >To unsubscribe from this group, send email to
> ><mailto:android-developers%[email protected]<android-developers%[email protected]>
> >[email protected]<android-developers%[email protected]>
> >For more options, visit this group at
> ><http://groups.google.com/group/android-developers?hl=en>
> http://groups.google.com/group/android-developers?hl=en
> >
> >
> >--
> >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]<android-developers%[email protected]>
> >For more options, visit this group at
> ><http://groups.google.com/group/android-developers?hl=en>
> http://groups.google.com/group/android-developers?hl=en
>
>
> --
> jason.vp.engineering.particle
>
> --
> 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]<android-developers%[email protected]>
> For more options, visit this group at
> http://groups.google.com/group/android-developers?hl=en
>

-- 
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