开发者

Changing a TextView in another class from a Service

开发者 https://www.devze.com 2022-12-15 07:05 出处:网络
I have two classes, one is a standard activity, the other a service. I would like the service to update a TextView (via .setText()) of the Activity on certain events that happen within the service.

I have two classes, one is a standard activity, the other a service. I would like the service to update a TextView (via .setText()) of the Activity on certain events that happen within the service.

I've tried to achieve this by programming something like a setter-method inside the Activity-Class, but TextViews don't accept a static-reference, and when I try invoking an instance of the Activity-class instead (via MyActivityClassName aVariable = new MyActivityClassName();), I get a NullPointer Exception, even though the View in questions is visible at the time of the call.

Could anyone tell me what I'm doing wrong :-)? It is probably more of a basic Java question than an Android-one, but since it might have to do 开发者_如何学Cwith the nature of Android-services, I've still added the android-tag.

Thanks for your help!


I would like the service to update a TextView (via .setText) of the Activity on certain events that happen within the service.

I would strongly recommend greater logical decoupling. Have the Service tell the Activity to update the TextView.

You can do that via a broadcast Intent, or by having the Activity provide a listener object that the Service calls. In either case, be sure the Activity detaches from the service (unregisters the listener or broadcast Intent receiver), lest you cause a memory leak.

And, of course, this only works if the activity is actually running.

0

精彩评论

暂无评论...
验证码 换一张
取 消