Fra*_*ent 5 android mvvmcross xamarin
我坚持使用基于 MVMCross 的 android 应用程序中的插件 Acr.UserDialogs。在 PCL 项目中,我在视图模型构造函数注入中使用了 IUserDialog。
我在 PCL 和 Droid 项目中都安装了 Acr.UserDialogs 包,但是当我运行应用程序时,它抛出:
在android中,您必须从您的第一个活动调用 UserDialogs.Init(Activity) 或从您的自定义应用程序调用 UserDialogs.Init(App) 或提供工厂函数以通过 UserDialogs.Init(() => supply top activity 获取当前的顶级活动)
我试图在我的 viewModel 中调用:
UserDialogs.Init(this);
Run Code Online (Sandbox Code Playgroud)
但是 Init 不被识别和调用 UserDialogs.Instance.Loading().Hide(); 在应用程序中引发了同样的问题。
它应该如何在android项目中初始化?
更新:解决此问题的最终解决方案如下所示:
- 在 PCL 项目 App.cs 中添加: Mvx.RegisterSingleton(() => UserDialogs.Instance);
- 在 OnCreate 的第一个加载的活动中添加: UserDialogs.Init(() => this);
这个错误非常明显。你不能在 viewModel 中初始化它,你只能在你的主要活动中做到这一点。
常问问题
使用加载时出现 nullreferenceexception。
当您从页面或视图模型的构造函数运行加载(或几乎任何对话框)时,就会发生这种情况。视图还没有被渲染,因此没有什么可渲染的。
Android 初始化在您的MainActivity 中
UserDialogs.Init(this);
OR UserDialogs.Init(() => provide your own top level activity provider)
OR MvvmCross - UserDialogs.Init(() => Mvx.Resolve<IMvxTopActivity>().Activity)
OR Xamarin.Forms - UserDialogs.Init(() => (Activity)Forms.Context)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4167 次 |
| 最近记录: |