AlertDialog没有显示在.show() - Xamarin Android

时间:2017-01-12 22:30:53

标签: xamarin xamarin.android alertdialog android-alertdialog

我有以下代码:

private void CloseOrder(object sender, EventArgs e)
{
    Android.Support.V7.App.AlertDialog.Builder alert = new Android.Support.V7.App.AlertDialog.Builder(this);

    alert.SetTitle("Cerrar Pedido");
    alert.SetMessage("Are you sure?");
    alert.SetCancelable(true);
    alert.SetPositiveButton("Confirm", delegate { this.Rta = true; });
    alert.SetNegativeButton("Cancel", delegate { this.Rta = false; });
    Dialog dialog = alert.Create();
    dialog.Show();

    if (this.Rta)
    {
        //Some code here
    }

}

this.Rta是我班级的财产。

问题是警告没有显示在dialog.show(),一旦方法CloseOrder()结束就会显示,因此this.Rta永远不会获得相应的分配值。

我一直在搜索,但我无法找到解决方案,如果有人能帮助我,那就太棒了!

1 个答案:

答案 0 :(得分:1)

dialog.Show()是异步方法,这意味着CloseOrder(object sender, EventArgs e)dialog.Show()同时结束。

你不能得到' Rta' CloseOrder函数的赋值。

点击对话框的确认取消按钮即可获得该值。

我建议您在delegate{this.Rta = true}

中使用邮件发件人

例如:

mHandler handler = new mHandler();
Message message = new Message();
message.What = 1;
alert.SetPositiveButton("Confirm", delegate { this.Rta = true; handler.SendMessage(message); });
alert.SetNegativeButton("Cancel", delegate { this.Rta = false; handler.SendMessage(message); });

// ...

class mHandler : Handler{
        public override void HandleMessage(Message message) {
            switch (message.What) {
                case 1:
                     if (this.Rta)
                     {
                          //Some code here
                     }
                     break;
                }
            }
        }