كيفية الخروج من النشاط الحالي إلى الشاشة الرئيسية (دون استخدام زر "الصفحة الرئيسية")؟

StackOverflow https://stackoverflow.com/questions/2758786

سؤال

أنا متأكد من أن هذا سيتم الرد عليه ولكني أثبتت عدم تمكنه من العثور عليه. لذا من فضلك أعذر التكرار.

ما أحاول القيام به هو محاكاة زر "الصفحة الرئيسية" الذي يعيد المرء إلى HomeScreen. إذن هذا هو ما الذي يسبب لي مشاكل:

  • لدي 3 أنشطة قاذفة. أول واحد (متصل برمز الشاشة الرئيسية) هو مجرد نشاط تكوين (محمي كلمة المرور). لن يتم استخدامه من قبل المستخدم (فقط المسؤول)
  • أحد الآخرين 2 (كلاهما تم الوصول إليه عبر عنصر واجهة المستخدم) هو تطبيق استبيان. أسمح للقفز بين الأسئلة عبر زر العودة أو زر استرداد واجهة المستخدم الرسومية أيضًا. عند الانتهاء من الاستبيان ، أقوم بتلخيص الإجابات المقدمة وأقدم زر "الانتهاء" الذي يجب أن يعيد المستخدم إلى الشاشة الرئيسية.

بالنسبة لتطبيق الاستبيان ، أستخدم نشاطًا واحدًا (يسمى itemActivity) والذي يطلق على نفسه (هل هذا التكرار أيضًا عند استخدام النوايا؟) للقفز من سؤال إلى آخر:

Questionnaire.serializeToXML();  
Intent i = new Intent().setClass(c, ItemActivity.class);  
if(Questionnaire.instance.getCurrentItemNo() == Questionnaire.instance.getAmountOfItems()) {  
    Questionnaire.instance.setCompleted(true);  
} else Questionnaire.instance.nextItem();  
startActivity(i);

تُظهر الشاشة النهائية شيئًا مثل "شكرًا لك على المشاركة" وكذلك الزر الموصوف سابقًا والذي يجب أن يعيد أحد الشاشة الرئيسية. لكنني لا أحصل على كيفية الخروج من النشاط بشكل صحيح. لقد استخدمت this.finish(); ولكن هذا يثير الغريب شاشة "شكرا لك" مرة أخرى. فكيف يمكنني فقط الخروج من خلال القفز إلى الشاشة الرئيسية ؟؟

أعتذر على الإزعاج.
يعتبر،
ستيف

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

المحلول

يبدو أن ما يحدث هو أن لديك نسخ متعددة من أنشطتك مفتوحة في نفس الوقت. في كل مرة تبدأ فيها مثيلًا جديدًا لنشاط ما ، تقوم فقط بإضافة نشاطات جديدة إلى المكدس - لا تزال جميع الأنشطة القديمة موجودة. عندما تتصل this.finish(), ، إنه يعرض عليك فقط أحدث نشاط كان مفتوحًا. لست متأكدًا من السبب في أن هذه هي شاشة "شكرًا لك" لأنه من المفترض أن يتم فتحها فقط في النهاية ، لكنني لا أتابع التسلسل تمامًا أنشطتك يتم استدعاؤها.

ما يمكنك محاولة القيام به لإصلاحه هو إما: 1) استخدم أ finish() في كل مرة بعد بدء نشاط جديد لسؤال مختلف (بحيث يكون هناك نشاط أسئلة واحد فقط مفتوح في وقت واحد) ، أو 2) معرفة ما إذا كان يمكنك الاستفادة من علامة النية clear_top. يبدأ ذلك النشاط المستهدف أثناء قتل أي شيء قد يكون فوقه في المكدس. على سبيل المثال ، إذا كان لديك أنشطة: A ، B ، C ، C ، C ، C ، C (إلخ لكل سؤال) ، فإن بدء A مع Clear_Top سيقتل جميع حالات B و C. يمكنك وضع هذا في بنية البرنامج عن طريق تغيير الشاشة الأولى ، يراه المستخدم عند بدء استبيان. هذا من شأنه أن يعرض رسالة "مرحبًا" افتراضيًا مع زر لبدء الاستبيان. ومع ذلك ، إذا تم البدء بقيمة معينة مجمعة مع النية ، فسيعرض رسالة "شكرًا لك".

إذا قمت بذلك ، فبمجرد أن finish() النشاط أ ، سيتم إعادة المستخدم إلى أي مكان كان قبل أن يبدأوا تطبيقك - من المفترض أن يكون الشاشة الرئيسية إذا بدأت مع AppWidget.

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