0

使用 MvvmCross,我想知道如何Android.Dialog在 Android Fragments 中使用。

在 iOS 上,我们可以添加一个实例DialogViewController作为父视图控制器的子视图:

var Dialog = new DialogViewController (root);

viewController.AddChildViewController (Dialog);
viewController.View.AddSubview (Dialog.View);

是否可以写一些与Android相关的东西?也就是说,在运行时在 Activity 中添加 Android.Dialog 片段?

... OnCreate (Bundle bundle) {
...

var Dialog = new DialogListFragment ();
Dialog.Root = root;

var transaction = FragmentManager.BeginTransaction ();
transaction.Replace (Resource.Id.DialogFrame, Dialog);
transaction.Commit ();

我刚刚尝试了上面的代码,它可以编译,但在运行时失败: [Android.Dialog] LoadLayout failed: You must call DroidResources.Initialise(Resource.Layout) before using Dialogs

最后,当将相同的根元素添加到 MvxDialogActivity 的实例时,它可以正常工作。

DialogListFragment 源码:https ://github.com/slodge/MvvmCross/blob/fffe39c9e3a9eae24e55fdf58cf6f84d71a4654d/CrossUI/CrossUI.Droid/Dialog/DialogListFragment.cs

你们中的一些人是否实施了相关的东西?

提前感谢您的任何提示。

4

1 回答 1

0

当前 MvvmCross 源中不支持“开箱即用” - 但合并片段和活动对话框代码以创建工作示例应该相对简单。


您列出的异常是从https://github.com/slodge/MvvmCross/blob/v3/CrossUI/CrossUI.Droid/DroidResources.cs#L99抛出的

它表明尚未调用设置 - 在标准样本(例如 N+1 视频样本)中,这是通过https://github.com/slodge/MvvmCross/blob/v3/Cirrious/Cirrious.MvvmCross.Dialog调用的.Droid/MvxAndroidDialogSetup.cs#L45

所以这建议您应该检查代码示例中的设置 - 资源是否正在初始化?

于 2013-08-18T17:35:16.640 回答