我正在尝试将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文件中初始化对话框,我已经这样做了。 请检查并告诉我代码中缺少的内容。
答案 0 :(得分:1)
根据Acr.UserDialogs的FAQ,
当您从中运行加载(或几乎任何对话框)时会发生这种情况 您的页面或viewmodel的构造函数。视图尚未呈现 然而,没有什么可以呈现的。
您在Page的构造函数中调用它。
尝试在某些按钮点击时显示警告,您应该可以这样做。