`Mvxformsdroidpagepresenter` in mvvmcross è progettato per gestire la navigazione per le pagine Xamarin.Forms all'interno di un'applicazione Android. Tuttavia, quando si tratta di chiamate non formiche, come quelle che coinvolgono attività Android native, reindirizza queste chiamate a un `mvxandroidviewpresenter`. Ciò consente all'applicazione di navigare perfettamente tra pagine di Xamarin.Forms e viste Android native.
Ecco una spiegazione dettagliata di come `mvxformsdroidpagepresenter herisce le chiamate non formiche:
1. Reindirizzamento delle chiamate non di forma: quando viene presentata una richiesta per mostrare una visione che non è una pagina Xamarin.Forms (ad esempio, un'attività Android nativa), la `mvxformsDroidPagePresenter` reindirizza questa richiesta a una richiesta` mvxandroidviewpresenter`. Questo presentatore è responsabile della gestione della logica di presentazione per le viste Android native.
2. Implementazione: per ottenere questo reindirizzamento, è necessario creare un presentatore personalizzato che estenda `mvxformsDroidPagePresenter`. In questo presentatore personalizzato, è possibile sostituire il metodo `show` per verificare se la richiesta del modello di visualizzazione è per una vista Xamarin.Forms o una vista Android nativa. Se è per una vista nativa, è possibile utilizzare `mvxandroidviewpresenter` per gestire la presentazione.
3. Interfaccia ViewModel: un approccio per distinguere tra xamarin.forms e modelli di vista Android nativi è definire un'interfaccia come `IxfviewModel` che è implementato da tutti i modelli di visualizzazione Xamarin.Forms. Nel tuo presentatore personalizzato, puoi verificare se il modello di visualizzazione implementa questa interfaccia. Se lo fa, lo gestisci come una vista da forma; Altrimenti, si utilizza `mvxandroidviewpresenter`.
4. Registrazione: per utilizzare il tuo presentatore personalizzato, è necessario sovrascrivere il metodo `createviewpresenter` nella classe di configurazione MVVMCRoss. Questo metodo dovrebbe restituire un'istanza del tuo presentatore personalizzato, garantendo che sia utilizzato per tutte le presentazioni di visualizzazione.
5. Gestione del ciclo di vita: per le viste Android native, è anche necessario gestire il ciclo di vita delle attività implementando `imvxandroidcurrenttopactivity` e` imvxandroidactivitylifetimelistener`. Ciò garantisce che MVVMCROSS sia a conoscenza dell'attuale attività superiore e possa gestire correttamente gli eventi di navigazione e ciclo di vita.
Seguendo questi passaggi, è possibile gestire efficacemente sia Xamarin.Forms che viste Android native all'interno della stessa applicazione utilizzando MVVMCRoss.
Citazioni:[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-materdetail
[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-1ee74d6f5f06b
[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.googlecloudcomunity.com/gc/appsheet-q-a/system-doesn-t-generate-detail-and-form-view-for-mytable-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