c# - Xamarin Forms 显示警报消失

标签 c# android xamarin.android xamarin.forms

我正在 Xamarin Forms 中开发一个应用程序,但我注意到一个奇怪的行为,当我在 Android(版本高于 4.2.2)中显示警报时,如果我在警报模式之外按下,警报就会消失立即地。有什么办法可以防止这种情况?我希望警报仅在用户选择时消失。

非常感谢

最佳答案

当在 Android 中显示一个对话框时,点击它的外部以取消是非常标准的。要更改此行为,您需要在 PCL 中创建一个接口(interface):

public interface ICustomAlert
{
  void ShowAlert(string message);
}

在您的 Android 项目中创建实现(类似这样):

  [assembly: Xamarin.Forms.Dependency (typeof (AndroidCustomAlert))]   
  public class AndroidCustomAlert : ICustomAlert
    {
      void ShowAlert(string message)
      {
        var builder = new AlertDialog.Builder(Xamarin.Forms.Forms.Context);
        builder.SetMessage(message);
        builder.SetPositiveButton("OK", (sender, args) => { });
        builder.SetCancelable(false);
        builder.Show();
      }
    }

注意 SetCancelable(false)。这就是它的原因,因此用户无法在警报之外单击并使其消失。

要使用它,从依赖服务获取 ICustomAlert 并调用 ShowAlert:

DependencyService.Get<ICustomAlert>().ShowAlert("Hello!");

关于c# - Xamarin Forms 显示警报消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40339059/

相关文章:

c# - 在一定数量的字符和换行符之后分割字符串。在 C# 中

java - 如何通过蓝牙在两个设备之间共享相机 View

android - 整个应用程序中使用的自定义字体

java - Xamarin-android 应用程序可以更新为 native java android 应用程序吗?

xamarin.android - Xamarin Studio 入门 : Why am I getting native library reference error on build without native libraries?

opengl - Xamarin Android 播放器 : OpenGL server is unreachable

c# - 如何使用 Simple Injector 注入(inject) CacheItemPolicy

c# - 使用 XmlReader 如何在开始时重新启动?

c# - 使用 C# 和反射对类的属性进行单元测试

android - 从 Android Webview 获取 session