Xamarin Android:使用Alert Dialog保持控制,直到单击一个按钮

my *_*lls 7 android nsrunloop xamarin.android

我们使用静态警报对话框来获取用户对某些操作的确认.在我们打电话中,Show()我们想要保持控制,直到用户点击一个按钮,这样我们就可以在Show()通话结束时返回按钮点击结果.

我们的iOS版本(a UIAlertView)使用

while (displayed)
{
    MonoTouch.Foundation.NSRunLoop.Current.RunUntil(
            MonoTouch.Foundation.NSDate.FromTimeIntervalSinceNow(0.2));
}
Run Code Online (Sandbox Code Playgroud)

在其Show()方法中,在返回其按钮选择之前等待用户输入.

我们可以在Monodroid中使用Android吗?

my *_*lls 4

通过不同的设计解决:

我们不是等待用户与对话框交互并阻止其他一切,而是在对用户单击按钮时触发的EventHandler静态方法的调用中提供一个:Show

public static void Show(string title, 
                        string message, 
                        Context context,
                        EventHandler handler,
                        ConfirmationAlertButton button) { ... }
Run Code Online (Sandbox Code Playgroud)

我们维护一个对传入的私有引用,EventHandler该引用在单击按钮时触发,如下所示:

private static void OkClicked(object sender, DialogClickEventArgs e)
{
    if (_handler != null)
    {
        _handler.Invoke(sender, e);
    }

    _instance.Dismiss();
    _instance = null;
    _handler = null;
}
Run Code Online (Sandbox Code Playgroud)

Show以下是从 Activity 进行调用的示例:

ConfirmationDialog.Show(@"Message title",
                        @"Message text",
                        this,
                        delegate
                        {
                            if (e.Result)
                            {
                                Finish();
                            }
                            else
                            {
                                Invalidate();
                            }
                        },
                        ConfirmationAlertButton.OK);
Run Code Online (Sandbox Code Playgroud)

如果有人想了解有关在 Xamarin Android 应用程序中使用静态对话框的更多信息,请告诉我!