`Mvxformsdroidpagepresenter` în MVVMcross este proiectat pentru a gestiona navigarea pentru paginile Xamarin.Forms într -o aplicație Android. Cu toate acestea, atunci când aveți de-a face cu apeluri non-forme, cum ar fi cele care implică activități Android autohtone, redirecționează aceste apeluri către un `mvxandroidviewpresenter`. Acest lucru permite aplicației să navigheze perfect între paginile Xamarin.Forms și vizualizările Android native.
Iată o explicație detaliată a modului în care `mvxformsdroidpagepresenter` se ocupă de apeluri non-forme:
1. Redirecționarea apelurilor non-formelor: Când se face o solicitare pentru a arăta o viziune care nu este o pagină Xamarin.Forms (de exemplu, o activitate Android nativă), `mvxformsdroidpagepresenter` redirecționează această solicitare către un` mvxandroidViewpresenter`. Acest prezentator este responsabil pentru gestionarea logicii de prezentare pentru vizualizările native Android.
2. Implementare: Pentru a realiza această redirecționare, trebuie să creați un prezentator personalizat care să extindă `mvxformsdroidpagepresenter`. În acest prezentator personalizat, puteți înlocui metoda `show` pentru a verifica dacă cererea modelului de vizualizare este pentru o vizualizare Xamarin.Forms sau o vizualizare Android nativă. Dacă este pentru o vizualizare nativă, puteți utiliza `mvxandroidviewpresenter` pentru a gestiona prezentarea.
3. Interfață ViewModel: O abordare de diferențiere între xamarin.Forms și modelele native Android View este de a defini o interfață precum `ixfviewmodel` care este implementată de toate modelele de vizualizare Xamarin.Forms. În prezentatorul dvs. personalizat, puteți verifica dacă modelul de vizualizare implementează această interfață. Dacă o face, îl gestionați ca vizualizare formulare; În caz contrar, utilizați `mvxandroidviewpresenter`.
4. Înregistrare: Pentru a utiliza prezentatorul personalizat, trebuie să înlocuiți metoda „CreateViewPresenter” din clasa dvs. de configurare MVVMcross. Această metodă ar trebui să returneze o instanță a prezentatorului dvs. personalizat, asigurându -vă că este utilizată pentru toate prezentările de vizualizare.
5. Managementul ciclului de viață: Pentru vizualizările Android autohtone, trebuie să gestionați și ciclul de viață al activității prin implementarea `imVxandroidCurrentToPactivity` și` IMVxandroidActivityLifeTimElistener`. Acest lucru asigură că MVVMcross este conștient de activitatea de top actuală și poate gestiona corect evenimentele de navigare și ciclu de viață.
Urmărind acești pași, puteți gestiona în mod eficient atât Xamarin.Forms, cât și vizualizări Android native în cadrul aceleiași aplicații folosind MVVMCross.
Citări:[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-form-that-contains-a-subform-a-one-to-many-form-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-form-view-for-my-table-view/m-p/527393
[9] https://stackoverflow.com/questions/38181508/login-page-with-xamarin-mvvmcross-forms-preventing-pack-navigation-on-android
[10] https://help.smartsuite.com/en/articles/6267415-FORM-VIEW
[11] https://www.mvvmcross.com/documentation/platform/xamarin.forms/xamarin-forms-view-presenter
[12] https://ridland2.rssing.com/chan-57660607/all_p1.html