0

私はMvvmCrossでXamarinを使用していますが、断片の使用に問題があります。MvvmCrossフラグメント解決

私はそうShowViewModelを呼び出して次のように

public class MainMenuViewModel : MvxViewModel 
{ 
} 

実装フラグメント:

[MvxFragment(typeof(MainMenuViewModel), Resource.Id.navigation_frame)] 
[Register("mvvm.droid.views.MainMenuView")] 
public class MainMenuView : MvxFragment<MainMenuViewModel> 
{ 
    public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) 
    { 
     var ignore = base.OnCreateView(inflater, container, savedInstanceState); 
     return this.BindingInflate(Resource.Layout.MainMenuView, null); 
    } 
} 

しかし、実行時に、それはエラースロー:

をMainMenuViewModelが、それはクラスの

public class MainViewModel : MvxViewModel 
{ 
    public override void Start() 
    { 
     ShowViewModel<MainMenuViewModel>(); 
    } 
} 

Android.Content.ActivityNotFoundException: Unable to find explicit activity class {Mvvm.Droid/md5f67dcc55ddb5809d2766dd0c42c8b3bb.MainMenuView}; have you declared this activity in your AndroidManifest.xml?

これを理解するために、私はhereから取ったCustomPresenterを実装しました。

とセットアップでは、フラグメントのために、このプレゼンターを登録:

protected override IMvxAndroidViewPresenter CreateViewPresenter() 
{ 
    var mvxFragmentsPresenter = new MvxCustomFragmentsPresenter(AndroidViewAssemblies); 
    Mvx.RegisterSingleton<IMvxAndroidViewPresenter>(mvxFragmentsPresenter); 
    return mvxFragmentsPresenter; 
} 

これは、プレゼンターのように思えるの断片を見つけましたが、ショーで(意図)メソッドは、それはまだ破砕の呼びかけ。逆コンパイルされたソースでは、それが活動であるかどうかの奇妙なチェックがあります。 多くの実装に基づいてdrawerLayoutを実装しようとしましたが、同じ結果が得られました。私は何が欠けているのですか?

答えて

4

問題は、あなたのMvxFragment属性である:

[MvxFragment(typeof(MainMenuViewModel), Resource.Id.navigation_frame)]

最初のパラメータはあなたがメニューフラグメントを置きたいあなたの活動に関連したMvxViewModelする必要がありますあなたのケースでは、私は、これはMainViewModelていると思われます。 ?

Mvvmcross MvxFragment属性のdescription

public MvxFragmentAttribute(
    Type parentActivityViewModelType, 
    int fragmentContentId, 
    bool addToBackStack = false); 
+0

どうもありがとう!問題を理解するのに何時間も費やした。 – Fragment