}//class public bool?ReadYesNoCancel(string prompt, bool?defaultYes, bool cancelButton) { bool? result = defaultYes; var w = new ManualResetEvent(false); Action exit = () => w.Set(); IDialogInterfaceOnCancelListener lsnrCancel = new IDIOCancelListener { Action = () => { System.Diagnostics.Debug.Assert(result == defaultYes, "NOT equal '" + result + " and '" + defaultYes + "'"); exit(); }, }; EventHandler dlgt = delegate { var bldr = new AlertDialog.Builder(_parent); bldr.SetMessage(prompt); bldr.SetCancelable(true); bldr.SetOnCancelListener(lsnrCancel); bldr.SetPositiveButton("Yes", delegate { result = true; exit(); }); bldr.SetNeutralButton("No", delegate { result = false; exit(); }); if (cancelButton) { bldr.SetNegativeButton("Cancel", delegate { result = null; exit(); }); } var dlg = bldr.Create(); dlg.Show(); }; UiInvokeNoWait(dlgt); w.WaitOne(); return(result); }
//---- public override string SafeReadLine(string prompt, string title) { string result = null; var w = new ManualResetEvent(false); Action exit = () => w.Set(); IDialogInterfaceOnCancelListener lsnrCancel = new IDIOCancelListener { Action = () => { System.Diagnostics.Debug.Assert(result == null, "NOT null '" + result + "'"); exit(); }, }; EventHandler dlgt = delegate { var bldr = new AlertDialog.Builder(_parent); bldr.SetTitle(title); bldr.SetMessage(prompt); // Set an EditText view to get user input final EditText input = new EditText(_parent); bldr.SetView(input); bldr.SetCancelable(true); bldr.SetOnCancelListener(lsnrCancel); bldr.SetPositiveButton("Yes", delegate { result = input.Text; exit(); }); bldr.SetNeutralButton("No", delegate { result = null; exit(); }); var dlg = bldr.Create(); dlg.Show(); }; UiInvokeNoWait(dlgt); w.WaitOne(); return(result); }