Ich benutze Xamarin mit MvvmCross, und habe ein Problem mit der Verwendung von Fragmenten.MvvmCross Fragmente lösen
Ich nenne ShowViewModel so:
public class MainViewModel : MvxViewModel
{
public override void Start()
{
ShowViewModel<MainMenuViewModel>();
}
}
Wo MainMenuViewModel es Klasse ist:
public class MainMenuViewModel : MvxViewModel
{
}
Implementiert Fragment wie folgt:
[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);
}
}
Aber auf Runtime löst es Fehler:
Android.Content.ActivityNotFoundException: Unable to find explicit activity class {Mvvm.Droid/md5f67dcc55ddb5809d2766dd0c42c8b3bb.MainMenuView}; have you declared this activity in your AndroidManifest.xml?
Um dies herauszufinden, habe ich CustomPresenter implementiert, aus here entnommen.
Und im Setup-Programm registriert diese Moderator für Fragmente:
protected override IMvxAndroidViewPresenter CreateViewPresenter()
{
var mvxFragmentsPresenter = new MvxCustomFragmentsPresenter(AndroidViewAssemblies);
Mvx.RegisterSingleton<IMvxAndroidViewPresenter>(mvxFragmentsPresenter);
return mvxFragmentsPresenter;
}
Es scheint, als Moderator Fragmente gefunden, aber bei Show (Intent) -Methode aufrufen, es noch vernichtende. In dekompilierten Quellen gibt es eine seltsame Überprüfung, ob es sich um eine Aktivität handelt. Versucht, DrawerLayout basierend auf vielen Implementierungen zu implementieren, aber das gleiche Ergebnis. Was ich vermisse?
Vielen Dank! Ich verbrachte Stunden damit, das Problem herauszufinden. – Fragment