【问题标题】:How to add Android.Dialog as an Android Fragment inside an Android Activity?如何在 Android Activity 中添加 Android.Dialog 作为 Android Fragment?
【发布时间】:2013-08-17 17:12:31
【问题描述】:

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

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

var Dialog = new DialogViewController (root);

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

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

... 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

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

提前感谢任何提示。

【问题讨论】:

    标签: android-fragments xamarin.android mvvmcross


    【解决方案1】:

    当前 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 调用的

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

    【讨论】:

    • 感谢@Stuart。它现在正在工作!我刚刚更新了我的 SplashScreen 类以继承 MvxSplashScreenActivity 而不是 Activity 如在 N=0 剧集中评论的那样。原来的 DialogListFragment 也按预期工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-17
    • 1970-01-01
    • 1970-01-01
    • 2012-10-12
    相关资源
    最近更新 更多