تم تصميم `mvxformsdroidpagepresenter` في mvvmcross للتعامل مع التنقل في صفحات xamarin.forms داخل تطبيق Android. ومع ذلك ، عند التعامل مع المكالمات غير النمطية ، مثل تلك التي تتضمن أنشطة Android الأصلية ، فإنه يعيد توجيه هذه المكالمات إلى "mvxandroidviewpresenter". يتيح ذلك للتطبيق التنقل بسلاسة بين صفحات Xamarin.Forms ووجهات نظر Android الأصلية.
فيما يلي تفسير مفصل لكيفية معالم "mvxformsdroidpagepresenter" مع المكالمات غير النمطية:
1. إعادة توجيه المكالمات غير النمطية: عندما يتم تقديم طلب لإظهار عرض ليس صفحة Xamarin.Forms (على سبيل المثال ، نشاط Android الأصلي) ، يعيد "MVXFormsDroidPagePresenter" توجيه هذا الطلب إلى "MvxAndroidViewpresenter`. هذا المقدم مسؤول عن التعامل مع منطق العرض لوجهات نظر Android الأصلية.
2. التنفيذ: لتحقيق هذا إعادة التوجيه ، تحتاج إلى إنشاء مقدم مخصص يمتد "mvxformsdroidpagepresenter`. في هذا المقدم المخصص ، يمكنك تجاوز طريقة "العرض" للتحقق مما إذا كان طلب نموذج العرض هو لعرض Xamarin.Forms أو عرض Android الأصلي. إذا كان الأمر يتعلق بعرض أصلي ، فيمكنك بعد ذلك استخدام "mvxandroidviewpresenter" للتعامل مع العرض التقديمي.
3. واجهة ViewModel: تتمثل إحدى الطرق للتمييز بين Xamarin.Forms ونماذج عرض Android الأصلية في تحديد واجهة مثل `IxfViewModel` التي يتم تنفيذها بواسطة جميع نماذج عرض Xamarin.forms. في مقدم العرض المخصص الخاص بك ، يمكنك التحقق مما إذا كان نموذج العرض ينفذ هذه الواجهة. إذا كان الأمر كذلك ، فإنك تتعامل معها كعرض أشكال ؛ خلاف ذلك ، يمكنك استخدام "mvxandroidviewpresenter".
4. التسجيل: لاستخدام مقدم العرض المخصص الخاص بك ، تحتاج إلى تجاوز طريقة "CreateViewPresenter" في فئة إعداد MVVMCross الخاصة بك. يجب أن تُرجع هذه الطريقة مثيلًا لمقدمك المخصص ، مما يضمن استخدامه لجميع عروض العرض.
5. إدارة دورة الحياة: بالنسبة إلى طرق عرض Android الأصلية ، تحتاج أيضًا إلى إدارة دورة حياة النشاط من خلال تنفيذ "ImvxAndroidCurrentTopactivity" و `imvxandroidactivitylifetimelistener`. هذا يضمن أن MVVMcross على دراية بالنشاط الأعلى الحالي ويمكنه التعامل مع أحداث التنقل ودورة الحياة بشكل صحيح.
من خلال اتباع هذه الخطوات ، يمكنك التعامل بشكل فعال مع كل من Xamarin.forms و Idance Android Views داخل نفس التطبيق باستخدام MVVMcross.
الاستشهادات:[1] https://stackoverflow.com/questions/35912706/mvvmcross-hybrid-xamarin-forms-and-and-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-o-to-many-form-dorf3822f-8aba-49cb-831a-1e74d6f5f06b
[5]
[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-dor-form-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-forms-view-presenter
[12] https://ridland2.rssing.com/chan-57660607/all_p1.html