سؤال

لدي فصلان ، واحد هو النشاط القياسي, والآخر أ الخدمات. أرغب في تحديث الخدمة عرض النص (عبر .setText()) من النشاط على بعض الأحداث التي تحدث داخل الخدمة.

لقد حاولت تحقيق ذلك من خلال برمجة شيء مثل الأساليب الضابط داخل فئة النشاط ، لكن TextViews لا تقبل أ static-مرجع ، وعندما أحاول استدعاء مثيل من فئة النشاط بدلاً من ذلك (عبر MyActivityClassName aVariable = new MyActivityClassName();) ، أحصل على ملف استثناء NullPointer, ، على الرغم من أن العرض في الأسئلة مرئية في وقت المكالمة.

هل يمكن لأي شخص أن يخبرني بما أفعله خطأ :-)؟ ربما يكون سؤال Java الأساسي أكثر من An Android-One ، ولكن نظرًا لأنه قد يكون له علاقة بطبيعة خدمات Android ، ما زلت أضفت أنظمة Android.

شكرا لمساعدتك!

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

المحلول

أود أن تقوم الخدمة بتحديث TextView (عبر .settext) للنشاط في بعض الأحداث التي تحدث داخل الخدمة.

أود أن أوصي بشدة بمزيد من الفصل المنطقي. لديك Service نقول لل Activity لتحديث TextView.

يمكنك القيام بذلك عبر إذاعة Intent, ، أو عن طريق وجود Activity قدم كائن مستمع أن Service المكالمات. في كلتا الحالتين ، تأكد من أن النشاط ينفصل عن الخدمة (قم بإلغاء الاستعداد للمستمع أو البث Intent المتلقي) ، خشية أن تسبب تسرب الذاكرة.

وبالطبع ، هذا يعمل فقط إذا كان النشاط يعمل بالفعل.

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