/// <summary> /// Create the specified dialogProvider and releaseUI. /// </summary> /// <param name="dialogProvider">Dialog provider.</param> /// <param name="releaseUI">If set to <c>true</c> release UI, when the dialog resumed.</param> public static SimpleDialogFragment Create(SimpleDialogProvider dialogProvider /*, bool releaseUI = false*/) { dialogProvider.FragmentTag = Guid.NewGuid().ToString(); dialogProvider.ProcessSessionId = ProcessSessionId; return(new SimpleDialogFragment { cachedProvider = dialogProvider, }); }
public override Dialog OnCreateDialog(Bundle savedInstanceState) { var provider = cachedProvider; if (provider == null) { if (savedInstanceState != null) { var savedProviderString = savedInstanceState.GetString(SavedProvider); if (!string.IsNullOrEmpty(savedProviderString)) { cachedProvider = JsonConvert.DeserializeObject <SimpleDialogProvider>(savedProviderString); provider = cachedProvider; } } } if (provider == null) { throw new InvalidProgramException("Unable to get dialog provider."); } Dialog dialog = null; switch (provider.Type) { case SimpleDialogProvider.DialogType.AlertDialog: var dialogBuilder = new AlertDialog.Builder(Activity); if (provider.TitleResId > 0) { dialogBuilder.SetTitle(MainApp.ThisApp.Resources.GetString(provider.TitleResId)); } dialogBuilder.SetMessage(MainApp.ThisApp.Resources.GetString(provider.MessageResId)); dialogBuilder.SetCancelable(provider.Cancelable); Cancelable = provider.Cancelable; dialogBuilder.SetPositiveButton( provider.PositiveButtonResId > 0 ? MainApp.ThisApp.Resources.GetString(provider.PositiveButtonResId) : Activity.Resources.GetString(Resource.String.OK), new EventHandler <DialogClickEventArgs>(OnButtonClick)); if (provider.NegativeButtonResId >= 0) { dialogBuilder.SetNegativeButton( provider.NegativeButtonResId == 0 ? Activity.Resources.GetString(Resource.String.Cancel) : Activity.Resources.GetString(provider.NegativeButtonResId), new EventHandler <DialogClickEventArgs>(OnButtonClick)); } dialog = dialogBuilder.Create(); if (provider.TitleResId > 0) { dialog.RequestWindowFeature((int)WindowFeatures.NoTitle); } dialog.SetCanceledOnTouchOutside(provider.CanceledOnTouchOutside); break; case SimpleDialogProvider.DialogType.PleaseWaitDialog: var progressDialog = new ProgressDialog(Activity); progressDialog.Indeterminate = true; progressDialog.SetProgressStyle(ProgressDialogStyle.Spinner); progressDialog.SetMessage( provider.MessageResId > 0 ? Activity.Resources.GetString(provider.MessageResId) : Activity.Resources.GetString(Resource.String.PleaseWaitMessage)); progressDialog.SetCancelable(false); progressDialog.SetCanceledOnTouchOutside(false); dialog = progressDialog; Cancelable = false; break; default: throw new InvalidProgramException("Unknown dialog type."); } return(dialog); }