我有以下代码:
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
永远不会获得相应的分配值。
我一直在搜索,但我无法找到解决方案,如果有人能帮助我,那就太棒了!
答案 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;
}
}
}