Le `mvxformsDroidPagePresenter 'dans MVVMCross est conçu pour gérer la navigation pour les pages Xamarin.forms dans une application Android. Cependant, lorsqu'ils traitent des appels non formes, tels que ceux impliquant des activités Android natives, il redirige ces appels vers un `MVXAndroidViewPresenter». Cela permet à l'application de naviguer de manière transparente entre les pages Xamarin.Forts et les vues Android natives.
Voici une explication détaillée de la façon dont «MvxFormsDroidPagePresenter» gère les appels non formes:
1. Redirection des appels non formes: lorsqu'une demande est faite pour afficher une vue qui n'est pas une page xamarin.forms (par exemple, une activité Android native), la `MvxFormSDroidPagePresenter 'redirige cette demande vers un` MVXAndroidViewPreser'. Ce présentateur est responsable de la gestion de la logique de présentation pour les vues Android natives.
2. Implémentation: Pour atteindre cette redirection, vous devez créer un présentateur personnalisé qui étend `mvxformsDroidPagePresenter». Dans ce présentateur personnalisé, vous pouvez remplacer la méthode «Show» pour vérifier si la demande de modèle de vue concerne une vue xamarin.forms ou une vue Android native. Si c'est pour une vue native, vous pouvez alors utiliser `mvxAndroidViewPresenter` pour gérer la présentation.
3. Interface ViewModel: Une approche pour différencier les modèles Xamarin.Forms et Native Android View est de définir une interface comme `ixfViewModel` qui est implémentée par tous les modèles de vue xamarin.forms. Dans votre présentateur personnalisé, vous pouvez vérifier si le modèle de vue implémente cette interface. Si c'est le cas, vous le gérez comme vue de formulaires; Sinon, vous utilisez le `MvxAndroidViewPresenter».
4. Enregistrement: Pour utiliser votre présentateur personnalisé, vous devez remplacer la méthode `CreateEViewPresenter 'dans votre classe de configuration MVVMCross. Cette méthode doit renvoyer une instance de votre présentateur personnalisé, garantissant qu'il est utilisé pour toutes les présentations de vue.
5. Gestion du cycle de vie: pour les vues Android natives, vous devez également gérer le cycle de vie de l'activité en implémentant `imvxandroidcurrentTopActivity` et` imvxandroidActivitylifetimeListener ». Cela garantit que MVVMCROSS est conscient de l'activité supérieure actuelle et peut gérer correctement les événements de navigation et de cycle de vie.
En suivant ces étapes, vous pouvez gérer efficacement la fois Xamarin.Forms et les vues Android natives dans la même application à l'aide de mvvmcross.
Citations:[1] https://stackoverflow.com/questions/35912706/mvvmcross-hybrid-xamarin-forms-and-android-activity-application
[2] https://stackoverflow.com/questions/36599398/mvvmcross-with-xamarin-forms-and-masterdetail
[3] https://github.com/mvvmcross/mvvmcross/issues/2802
[4] https://support.microsoft.com/en-us/office/create-a-forme-that-Contains-a-suform-aa-one-to-many-ford-ddf3822f-8aba-49cb-831a-1e74d6f5f06b
[5] https://michaelridland.com/xamarin/mixing-xamarin-forms-mvvmcross-nativeviews/
[6] https://xamarin97.rssing.com/chan-50656755/article24666.html
[7] https://xamarin91.rssing.com/chan-50628054/all_p539.html
[8] https://www.googlecloudcommunity.com/gc/appsheet-q-a/system-doesn-t-generate-detail-and-for-view-for-my-table-view/m-p/527393
[9] https://stackoverflow.com/questions/38181508/login-page-with-xamarin-mvvmcross-forms-preventing-back-navigation-on-android
[10] https://help.smartsuite.com/en/articles/6267415-Form-View
[11] https://www.mvvmcross.com/documentation/platform/xamarin.forms/xamarin-forme-view-presenter
[12] https://ridland2.rssing.com/chan-57660607/all_p1.html