首页 > 解决方案 > 我是 xamarin 的新手,想在我的 xamarin.forms 项目中实现对话框

问题描述

我正在尝试在我的 xamain.forms 项目中实现 acr.userDialogs,它在 android 中得到了完美的实现,但是当我尝试在 iOS 设备中运行它时,我得到了空对象引用。

这是我正在使用的对话框的库参考:

https://github.com/aritchie/userdialogs

这是我的page.xaml.cs文件:

[XamlCompilation(XamlCompilationOptions.Compile)]
    public partial class Page1 : ContentPage
    {
        public Page1 ()
        {
            InitializeComponent ();
            UserDialogs.Instance.Alert("Demo Dialog", "Dialog", "ok");
        }
    }

这是安卓ManinActivity.cs文件:

[Activity(Label = "App3", Icon = "@mipmap/icon", Theme = "@style/MainTheme", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)]
    public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
    {
        protected override void OnCreate(Bundle bundle)
        {
            TabLayoutResource = Resource.Layout.Tabbar;
            ToolbarResource = Resource.Layout.Toolbar;
            UserDialogs.Init(() => (Activity)Forms.Context);
            base.OnCreate(bundle);

            global::Xamarin.Forms.Forms.Init(this, bundle);
            LoadApplication(new App());
        }
    }

这是我appDelegate.cs的 iOS 文件:

public override bool FinishedLaunching(UIApplication app, NSDictionary options)
        {
            global::Xamarin.Forms.Forms.Init();
            LoadApplication(new App());

            return base.FinishedLaunching(app, options);
        }

这是我Main.cs的 iOS 文件:

public class Application
    {
        // This is the main entry point of the application.
        static void Main(string[] args)
        {
            // if you want to use a different Application Delegate class from "AppDelegate"
            // you can specify it here.
            UIApplication.Main(args, null, "AppDelegate");
        }
    }

我还看到了库文档,发现您不需要像在 iOS 中那样自动初始化 userDialogs,但是在 android 中,必须在 MainActivity.cs 文件中初始化对话框,我已经这样做了。请检查并让我知道我的代码中缺少什么。

标签: androidiosxamarinxamarin.forms

解决方案


根据Acr.UserDialogs的常见问题解答,

当您从页面或视图模型的构造函数运行加载(或几乎任何对话框)时,就会发生这种情况。该视图尚未渲染,因此没有可渲染的内容。

您在 Page 的构造函数中调用它。

尝试在单击某些按钮时显示警报,您应该可以做到。


推荐阅读