O `mvxformsdroidPagePrendender` em mvvmcross foi projetado para lidar com a navegação para Xamarin.forms Pages dentro de um aplicativo Android. No entanto, ao lidar com chamadas não-formas, como as que envolvem atividades nativas do Android, ele redireciona essas chamadas para um `mvxandroidViewPresenter`. Isso permite que o aplicativo navegue perfeitamente entre as páginas Xamarin.Forms e as visualizações nativas do Android.
Aqui está uma explicação detalhada de como `mvxformsdroidPagePrendender 'lida com chamadas não-formulárias:
1. Redirecionando chamadas não-formas: Quando é feita uma solicitação para mostrar uma visualização que não é uma página Xamarin.forms (por exemplo, uma atividade nativa do Android), a `mvxformsdroidPagePrendester 'redireciona essa solicitação para um` mvxandroidViewPrender'. Este apresentador é responsável por lidar com a lógica de apresentação para as visualizações nativas do Android.
2. Implementação: para alcançar esse redirecionamento, você precisa criar um apresentador personalizado que estenda `mvxformsDroidPagePresender`. Neste apresentador personalizado, você pode substituir o método `show` para verificar se a solicitação do modelo de exibição é para uma exibição xamarin.forms ou uma visualização nativa do Android. Se for para uma visualização nativa, você pode usar o `mvxandroidViewPresender` para lidar com a apresentação.
3. Interface ViewModel: Uma abordagem para diferenciar os modelos Xamarin.Forms e Android Native Android é definir uma interface como `ixfviewModel`, implementada por todos os modelos de visualização Xamarin.forms. No seu apresentador personalizado, você pode verificar se o modelo de exibição implementa essa interface. Se isso acontecer, você lida como uma visualização de formulários; Caso contrário, você usa o `mvxandroidViewPresender`.
4. Registro: Para usar seu apresentador personalizado, você precisa substituir o método `CreateviewPrendender` na sua classe de configuração MVVMCROSS. Este método deve retornar uma instância do seu apresentador personalizado, garantindo que ele seja usado para todas as apresentações de exibição.
5. Gerenciamento do ciclo de vida: Para visualizações nativas do Android, você também precisa gerenciar o ciclo de vida da atividade implementando `imvxandroidcurrentTopActivity` e` imvxandroidactivityLifeTimelistener`. Isso garante que o MVVMcross esteja ciente da atividade superior atual e possa lidar adequadamente com eventos de navegação e ciclo de vida.
Seguindo estas etapas, você pode lidar efetivamente com xamarin.forms e visualizações nativas do Android no mesmo aplicativo usando MVVMCROSS.
Citações:[1] https://stackoverflow.com/questions/35912706/mvvmcross-hybrid-xamarin-forms-and-android-ativity-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/article246666.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-back-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