2013-08-17 26 views
0

使用MvvmCross,我想知道如何在Android Fragments中使用Android.Dialog如何將Android.Dialog添加爲Android活動中的Android Fragment?

在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

有沒有一些你們實現的東西有關係嗎?

在此先感謝您的任何提示。

回答

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

稱爲

所以這表明你應該檢查你的代碼示例中的設置 - 資源是否被初始化?

+0

感謝@Stuart。它正在工作!我剛更新了我的SplashScreen類,以將其從'MvxSplashScreenActivity'繼承,而不是'Activity'作爲註釋到N = 0情節中。最初的DialogListFragment也按預期工作。 – georgepiva

+0

N = 23是dlg視頻http://mvvmcross.wordpress.com/ – Stuart

相關問題