قم بإزالة Radiobuttons التي تم إنشاؤها Dynamically من مجموعة Radiogroup في Android

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

سؤال

:) يتم إنشاء RadiObuttons الخاص بـ Radiogroup الخاص بي ديناميكيًا من قائمة ArrayList (التي توجد في نشاطي الرئيسي) المليئة بالروابط مثل:

ArrayList = {"hxxp: //helloworld.com" ، "hxxp: //helloworld2.net" ، ... ، "hxxp: //whevery.com"}

ثم لدي فئة جديدة تسمى "الروابط" التي يتم استدعاؤها من زر القائمة في نشاطي الرئيسي الذي يضع تصميمًا لطيفًا مع Radiobubtton لكل رابط (في Scrollview) و "Go!" زر في أسفل الصفحة (التصميم النسبي).

كل هذا يعمل بشكل رائع باستثناء شيء واحد. إذا قمت بالخروج من التطبيق باستخدام زر Back ، وعادت إلى التطبيق من خلال النقر فوق الرمز في قائمة Android ، يمكنك الوصول إلى النشاط الرئيسي ، ثم انقر فوق الزر "Links" في القائمة وتضاعفها في كل مرة. ؟؟؟ مثل ذلك:

الرابط 0
الرابط 1
الرابط 2
الرابط 0 (مرة أخرى)
الرابط 1 (مرة أخرى)
الرابط 2 (مرة أخرى)

هذا يلحق الروابط إلى أسفل في كل مرة تعود فيها إلى نشاط "الروابط" من المغادرة. هل هناك طريقة يمكنني من خلالها استدعاء طريقة لمسح جميع أزرار الراديو التي تم إنشاؤها في الجلسة الأخيرة في نشاط الروابط قبل وضعها في مجموعة Radiogroup؟ حاولت تغيير بلدي onPause() إلى finish(); حاولت تحرير ذاكرة التخزين المؤقت RadioGroup.destroyDrawingCache(); لا شيء يبدو أنه يفعل ذلك.

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

المحلول

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

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

نصائح أخرى

يمكنك إزالة أزرار الراديو التي تم إنشاؤها ديناميكيًا مثل هذا:

RadioGroup rg=(RadioGroup)findViewById(R.id.radioGroupnew1);
rg.clearCheck();
rg.removeAllViews();

حصلت عليه ، أعتقد أن المكان في الذاكرة ترك قائمة Arraylist هناك حتى بعد أن تم استدعاء Ondestroy (). كل ما فعلته لإصلاح هذا كان دعوة ".clear () ؛" على ListArray مباشرة بعد إنشاءه في النشاط الرئيسي لتطبيق Android الخاص بي. وبهذه الطريقة في كل مرة يتم فيها فتح التطبيق ، يتم إنشاء إنشاء مثيل له. يعمل كالسحر :)

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