我是xamarin的新手,想在我的xamarin.forms项目中实现对话框

时间:2018-05-24 06:06:21

标签: android ios xamarin xamarin.forms

我正在尝试将acr.userDialogs实现到我的xamain.forms项目中,它在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");
        }
    }

这是android 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());
        }
    }

这是iOS的appDelegate.cs文件:

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

            return base.FinishedLaunching(app, options);
        }

这是iOS的Main.cs文件:

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文件中初始化对话框,我已经这样做了。 请检查并告诉我代码中缺少的内容。

1 个答案:

答案 0 :(得分:1)

根据Acr.UserDialogs的FAQ

  

当您从中运行加载(或几乎任何对话框)时会发生这种情况   您的页面或viewmodel的构造函数。视图尚未呈现   然而,没有什么可以呈现的。

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

尝试在某些按钮点击时显示警告,您应该可以这样做。