سؤال

لدي نشاط تفضيلات حيث يمكنني تغيير اللغة وموضوع طلبي. من هناك أعود إلى النشاط السابق عبر المفتاح الخلفي ، وأريد إعادة إنشاء النشاط.

لقد تمكنت من القيام بذلك عن طريق إعادة تخطيط التصميم في onResume وكذلك الاتصال onRestoreInstanceState من هناك. تتم استعادة جميع المشاهدات بشكل صحيح ، مع فحص مربعات الاختيار إذا لزم الأمر ، EditTexts مليئة بالنصوص التي تركتها هناك سابقًا.

لكن لدي أيضًا زر يتم تعطيله في البداية ، ويتم تمكينه فقط عند فحص Radiobutton. المشكلة في ذلك هي ما يلي: أتحقق من Radiobutton ، يصبح الزر ممكّنًا. ثم أذهب إلى الإعدادات ، وأغير الموضوع هناك ، وأعود إلى النشاط الأول. عندما أصل إلى هناك ، تتم استعادة Radiobutton كما تم فحصه ، ولكن يتم تعطيل الزر.

لذلك يبدو أن حالة التمكين/المعوقة لا يتم حفظها في الحزمة ، والتي تبدو غير بديهية. ولم أجد أي رمز في مصدر Android يقوم بذلك أيضًا. هل أفتقد شيئًا ، أم يجب أن أكتب رمزًا خاصًا بذلك؟

تحرير: راجع للشغل ، يتم حفظ الحالة فقط للآراء التي لها معرفات. وهذا الزر لديه واحد ، أنا أضمن ذلك :)

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

المحلول

هم المفتاح هنا هو معرفة ما الذي يمكّن الزر بالفعل والتأكد من أن ذلك يتسق في كل وصول إلى التطبيق.

من بيانك:

لكن لدي أيضًا زر يتم تعطيله في البداية ، ويتم تمكينه فقط عند فحص Radiobutton.

يبدو أن لديك مستمعًا على Radiobutton الذي يمكّن الزر. من هذا ، أجمع أن الزر معاق في البداية ، مما يعني أنه سيتعين عليك تغيير ذلك في كل مرة تقوم فيها بتشغيل النشاط.

خياراتك على النحو التالي:

  • اطلب من Radiobutton تعيين نوع من التفضيلات العالمية التي يتم فحصها في Onresume ، مما يتيح الزر إذا لزم الأمر
  • عند فحص Radiobutton ، قم بتغيير الإعدادات العالمية (أو ربما إعدادات واجهة المستخدم الرسومية) إلى واحد يتم تمكين الزر فيه. يمكن أن يبقى إلى الأبد حتى يتم تحديد راديووتون مرة أخرى.
  • إنقاذ التمكين في onsaveinstancestate كما ذكرت

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

نصائح أخرى

أسهل طريقة هي تمكين الزر الخاص بك في onresume إذا تم التحقق من Radiobutton.

يحرر: مجموعة الأفضلية يمكن التعامل مع التبعيات بين وجهات النظر ، لكنه يحتاج إلى أن يكون النشاط فئة فرعية تفضيل النشاط.

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