0

Android.DialogMvvmCross を使用して、 Android Fragments 内での使用方法を知りたいです。

DialogViewControlleriOS では、親ビュー コントローラーの子として のインスタンスを追加するだけです。

var Dialog = new DialogViewController (root);

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

Androidに関連するものを書くことは可能ですか? つまり、実行時にアクティビティ内に 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

何人かは関連するものを実装しましたか?

ヒントをお寄せいただきありがとうございます。

4

1 に答える 1

0

これは、現在の MvvmCross ソースでは「そのまま」サポートされていませんが、動作サンプルを作成するためにフラグメントとアクティビティ ダイアログ コードをマージするのは比較的簡単です。


リストした例外はhttps://github.com/slodge/MvvmCross/blob/v3/CrossUI/CrossUI.Droid/DroidResources.cs#L99からスローされます

Setup が呼び出されていないことを示唆しています - 標準サンプル (例: N+1 ビデオ サンプル) では、これはhttps://github.com/slodge/MvvmCross/blob/v3/Cirrious/Cirrious.MvvmCross.Dialog経由で呼び出されます。 .Droid/MvxAndroidDialogSetup.cs#L45

これは、コード サンプルのセットアップを確認する必要があることを示唆しています。リソースは初期化されていますか?

于 2013-08-18T17:35:16.640 に答える