`MvxformsdroidpagePresenter` в Mvvmcross призначений для обробки навігації для сторінок xamarin.forms в додатку Android. Однак, маючи справу з неформальними дзвінками, такими як ті, що стосуються рідної діяльності Android, це перенаправляє ці дзвінки на `mvxandroidviewPresenter`. Це дозволяє програмі безперешкодно орієнтуватися між сторінками xamarin.forms та нативними видами Android.
Ось детальне пояснення того, як `mvxformsdroidpagePresenter` обробляє неформальні дзвінки:
1. Перенаправлення неформальних дзвінків: Коли подається запит, щоб показати вигляд, який не є сторінкою xamarin.forms (наприклад, рідною активністю Android), `mvxformsdroidpagePresenter` перенаправляє цей запит на` mvxandroidviewpresenter`. Цей ведучий несе відповідальність за обробку логіки презентації для рідних переглядів Android.
2. Реалізація: Для досягнення цього перенаправлення потрібно створити власний ведучий, який розширює `mvxformsdroidpagePresenter`. У цьому спеціальному ведучому ви можете перекрити метод `show`, щоб перевірити, чи є запит моделі перегляду для перегляду xamarin.forms або нативного перегляду Android. Якщо це для рідного виду, ви можете використовувати `mvxandroidviewPresenter` для обробки презентації.
3. Інтерфейс ViewModel: Один підхід до розмежування між моделями Xamarin.Forms та Native Android View - це визначення такого інтерфейсу, як `ixfviewModel`, який реалізується всіма моделями xamarin.forms View. У своєму спеціальному ведучому ви можете перевірити, чи реалізує цей інтерфейс модель перегляду. Якщо це так, ви обробляєте це як вид на форми; В іншому випадку ви використовуєте `mvxandroidviewPresenter`.
4. Реєстрація: Щоб скористатися спеціальним ведучим, вам потрібно перекрити метод `createviewPresenter` у вашому класі налаштування MVVMCross. Цей метод повинен повернути екземпляр вашого спеціального ведучого, гарантуючи, що він використовується для всіх презентацій перегляду.
5. Управління життєвим циклом: Для нативних поглядів Android також потрібно керувати життєвим циклом активності, впровадивши `imvxandroidcurrentTopactivity` та` imvxandroidActivityLifetimeListener`. Це гарантує, що MVVMcross усвідомлює поточну верхню активність і може правильно обробляти навігаційні та життєві циклі.
Дотримуючись цих кроків, ви можете ефективно обробляти як xamarin.forms, так і нативні подання Android в одному додатку за допомогою MVVMCross.
Цитати:[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-on-to-many-form-df3822f-8aba-49cb-831a-1e74d6f5f06b
[5] https://michaelridland.com/xamarin/mixing-xamarin-forms-mvvmcross-nativiews/
[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--generate-detail-and-form-view-fa-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-forms-view-presenter
[12] https://ridland2.rssing.com/chan-57660607/all_p1.html