تغيير بيانات حزمة عازمة أمام النشاط إعادة إنشائه بعد تغيير التوجه

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

  •  05-07-2019
  •  | 
  •  

سؤال

ولدي الإخطار الذي يبدأ نشاطي ويمر الرسائل باستخدام وظيفة القصد في putExtra (). ثم يتم عرض رسالة إلى المستخدم في وظيفة OnCreate الخاص للنشاط. عند إعادة تشغيل التطبيق بسبب تغيير التوجه، يظهر الرسالة مرة أخرى لأنه لا يزال في البيانات المجمعة نية ل.

وكيف يمكنني إزالة بيانات إضافية؟

وحاولت ما يلي:

Bundle bundle = getIntent().getExtras();
if (bundle.getBoolean("showMessage")) {
    // ... show message that is in bundle.getString("message")
    // remove message
    bundle.remove("showMessage");
}

ولكن ستظل تظهر رسالة بعد تغيير التوجه، ويبدو أن القصد المستخدمة ليست واحدة وأنا تغيرت، ولكن الاصل واحد. الحل الوحيد الذي وجدته هو إنقاذ showMessage بالإضافة إلى ذلك في onSaveInstanceState(). هل هناك طريقة أخرى؟ أو هل هذا هو الطريق للذهاب؟

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

المحلول

وو(بسيطة) الحل هو:

وبدلا من استدعاء

bundle.remove("showMessage");

وأنا الآن استخدام

getIntent().removeExtra("showMessage");

والذي يعمل كما هو متوقع. يبدو getIntent (). getExtras () إرجاع نسخة، وليس المرجعية.

نصائح أخرى

ونهج onSaveInstanceState() الخاص بك هو الجواب الصحيح، AFAIK.

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