well i already did the wrapper so :-) thanks for your help on this one...
>Yeah, just ran a quick test and setting cancelable to false stills >lets the dialog be dismissed by a button press. Weird. This >definitely feels ass-backwards. > >Well, the last thing I can think of is adding your own layout with >an OK and cancel button with Dialog.setView() and handle the >clicking on THOSE the way you wanted to. That should definitely >work. And it might be less work than a full-blown wrapper. > >Good luck! > >------------------------------------------------------------------------------------------------- >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 2:24 PM, Jason Proctor ><<mailto:[email protected]>[email protected]> >wrote: > >according to the docs, setCancelable() determines whether the "back" >key cancels the dialog. > >it's not so much the cancel behaviour as the ok behaviour. if the >dialog didn't auto-dismiss on an OK click, then things would work a >lot easier. > >well, i'm just going to write a wrapper class that does all this dumb >stuff and calls out to custom validator and acceptor listeners to do >the necessary. it's a bit odd that Android has listeners up the wazoo >but Dialog doesn't quite fit in. > > > > >>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>http://sites.google.com/site/rezmobileapps/treking><http://sites.google.com/site/rezmobileapps/treking>http://sites.google.com/site/rezmobileapps/treking > > > >>On Fri, Nov 20, 2009 at 1:49 PM, Jason Proctor > > > ><<mailto:<mailto:[email protected]>[email protected]><mailto:[email protected]>[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><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><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:<mailto:<mailto:[email protected]>[email protected]><mailto:[email protected]>[email protected]><mailto:<mailto:[email protected]>[email protected]><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><<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><<<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><<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:<mailto:<mailto:[email protected]>[email protected]><mailto:[email protected]>[email protected]><mailto:<mailto:[email protected]>[email protected]><mailto:[email protected]>[email protected]><mailto:<mailto:<mailto:[email protected]>[email protected]><mailto:[email protected]>[email protected]><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:<mailto:<mailto:[email protected]>[email protected]><mailto:[email protected]>[email protected]><mailto:<mailto:[email protected]>[email protected]><mailto:[email protected]>[email protected]><mailto:<mailto:<mailto:[email protected]>[email protected]><mailto:[email protected]>[email protected]><mailto:<mailto:[email protected]>[email protected]><mailto:[email protected]>[email protected] > > > >> > >>> >To unsubscribe from this group, send email to >>> >> >> > > > > > ><mailto:<mailto:<mailto:<mailto:android-developers%[email protected]>android-developers%[email protected]><mailto:android-developers%[email protected]>android-developers%[email protected]><mailto:<mailto:android-developers%[email protected]>android-developers%[email protected]><mailto:android-developers%[email protected]>android-developers%[email protected]><mailto:<mailto:<mailto:android-developers%[email protected]>android-developers%[email protected]><mailto:android-developers%[email protected]>android-developers%[email protected]><mailto:<mailto:android-developers%[email protected]>android-developers%[email protected]><mailto:android-developers%[email protected]>[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><<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><<<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><<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:<mailto:<mailto:[email protected]>[email protected]><mailto:[email protected]>[email protected]><mailto:<mailto:[email protected]>[email protected]><mailto:[email protected]>[email protected] >>>>To unsubscribe from this group, send email to >>>><mailto:<mailto:<mailto:android-developers%[email protected]>android-developers%[email protected]><mailto:android-developers%[email protected]>android-developers%[email protected]><mailto:<mailto:android-developers%[email protected]>android-developers%[email protected]><mailto:android-developers%[email protected]>[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><<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><<<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><<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:<mailto:<mailto:[email protected]>[email protected]><mailto:[email protected]>[email protected]><mailto:<mailto:[email protected]>[email protected]><mailto:[email protected]>[email protected] >>>To unsubscribe from this group, send email to >>><mailto:<mailto:<mailto:android-developers%[email protected]>android-developers%[email protected]><mailto:android-developers%[email protected]>android-developers%[email protected]><mailto:<mailto:android-developers%[email protected]>android-developers%[email protected]><mailto:android-developers%[email protected]>[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><<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:<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]><mailto:android-developers%[email protected]>[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><<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:<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]><mailto:android-developers%[email protected]>[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]>[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]>[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] >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] For more options, visit this group at http://groups.google.com/group/android-developers?hl=en

