سؤال

أولاً، لست متأكدًا مما إذا كنت سأقوم بذلك بأفضل طريقة من حيث التصميم، لكنني جديد قليلًا على Android وجديد جدًا على Xamarin.Forms.الإعداد الخاص بي عبارة عن سلسلة من ContentPageالموجودة في Xamarin.Forms PCL التي تتعامل جميعها مع المعلومات من خدمة REST.تمنح هذه الخدمة، عند تسجيل الدخول، أ WorkToken أن يتمسك التطبيق بعد ذلك من أجل إجراء المزيد من العمليات.أنا أقوم بتخزين هذا في ISessionManager.

مشكلتي هي مشكلة سير العمل.انا املك LoginPage الذي أريد تقديمه للمستخدم إذا انتهت جلسته/تعطلت/أيًا كان؛في الأساس، إذا لم يقوموا بتسجيل الدخول وحاولوا القيام بأي شيء، فأنا أرغب في دفع هذه الصفحة إلى المكدس وإجبارهم على محاولة تسجيل الدخول، وإذا قدموا بيانات اعتماد صالحة، اسمح لهم بالمتابعة من حيث توقفوا.كل هذا يحدث، في معظمه، في PCL، لكنني قمت بإنشاء تطبيق Android لـ ISessionManager التي يتم الاستعلام عنها على كل ContentPageتم تجاوزه OnAppearing طريقة.كل صفحة تدعو ISessionManagerCheckLogin والذي سيفعل ذلك بالضبط، وإذا لم يتم تسجيل الدخول، فسيتم إنشاء ملف Intent وابدأ LoginActivity من خلال ذلك. LoginActivity في الأساس يلتف حول PCL LoginPage.

المشكلة التي أواجهها هي أنه عند القيام بذلك بهذه الطريقة، فإن LoginActivity يتم تشغيله بشكل غير متزامن أعلى أي صفحة يطلق عليها اسم.ومع ذلك، فإن صفحة الاتصال هذه في حالة تعطل، لأنه لم تتم تهيئتها بشكل صحيح من خلال خدمة REST حتى الآن.أتصور أن هناك حلين ممكنين.إما تشغيل Intent بشكل متزامن (وهو ما لا أعتقد أنه ممكن) أو إعادة التفكير في تصميمي.هنا Intent يثبت:

var intent = new Intent(_context, typeof(LoginActivity));
intent.AddFlags(ActivityFlags.NewTask);
_context.StartActivity(intent);

لقد قمت بمراجعة العديد من منتديات Xamarin بحثًا عن منشورات ذات صلة بهذا الشأن، لكن لم أجد الكثير خارج نطاق سير عمل التنقل الأساسي في Xamarin.Forms.

يحرر:لقد وجدت شيئًا مشابهًا لما أحاول القيام به هنا: كيفية تمرير المتغيرات من غرض جديد إلى الفئة التي أنشأته في Android, ، ولكن في سياق Xamarin.Forms.ال startActivityForResult سوف تحل مشكلتي إذا كانت موجودة في Forms.Context, ، ولكن لا يبدو أن هناك ما يعادلها.

هل كانت مفيدة؟

المحلول

لماذا تقوم بإنشاء نشاط تسجيل الدخول؟هل لأنك تحتاج إلى استخدام شيء أصلي من android؟

فكرتي الأولى هي أنه بعد التحقق من حالة الرمز المميز في OnAppearing، يمكنك أن تقرر دفع النموذج لصفحة تسجيل الدخول أو عدمه، وبعد الانتهاء من تسجيل دخول المستخدم وحفظ الرمز المميز، يمكنك فتح النموذج وهو سوف تظهر الصفحة السابقة كان المستخدم.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top