Xamarin:按下后退按钮时关闭警报对话框

时间:2015-02-20 18:29:06

标签: c# android visual-studio-2012 xamarin onbackpressed

我是Xamarin Android的新手。我有一个Activity,当按下textview时会显示一条警告。 AlertDialog的代码是:

textView1.Click += (sender, e) =>
            {
                AlertDialog.Builder alert = new AlertDialog.Builder(this);
                alert.SetTitle("title");
                alert.SetMessage("Message");
                alert.SetCancelable(false);
                alert.SetPositiveButton("Cerrar Sesión", delegate { funcCerrarSesion(); });
                alert.SetNegativeButton("Salir", delegate { Finish(); });
                alert.SetNeutralButton("Volver", delegate {  });

                RunOnUiThread(() =>
                {
                    alert.Show();
                });
            };

我需要按下后退按钮,此事件关闭AlertDialog。 谢谢。

PD:我是Visual Studio 2012 +插件Xamarin的开发者

编辑(ρяσѕρєяK's Solution):

    Dialog dialog;
            protected override void OnCreate(Bundle bundle)
            {
..
textView1.Click += (sender, e) =>
            {
                AlertDialog.Builder alert = new AlertDialog.Builder(this);
                alert.SetTitle("Advertencia");
                alert.SetMessage("Está seguro?");
                alert.SetCancelable(false);
                alert.SetPositiveButton("Cerrar Sesión", delegate { funcCerrarSesion(); });
                alert.SetNegativeButton("Salir", delegate { Finish(); });
                alert.SetNeutralButton("Volver", delegate {  });

                RunOnUiThread(() =>
                {
                    dialog = alert.Create();
                    dialog.Show();
                });
            };
...
}

public override void OnBackPressed()
        {
            if (dialog != null)
            {
                if (dialog.IsShowing)
                {
                    dialog.Dismiss();
                }
                else
                {
                    base.OnBackPressed();
                }
            }
            else
            {
                base.OnBackPressed();
            }
        }

此操作会继续显示警告,但在按下back button时,警报未关闭。

1 个答案:

答案 0 :(得分:1)

  

我需要按下后退按钮,此事件关闭   AlertDialog

按后退按键取消对话框:

1。覆盖OnBackPressed

2。需要访问alert中的OnBackPressed对象,因此在alert之前声明OnCreate对象:

public override void OnBackPressed()
{
    if (alert !=null){
       if(alert.IsShowing){
          alert.Dismiss ();
        }else{
          base.OnBackPressed();
        }
     }else{
        base.OnBackPressed();
     }
}
相关问题