Android 如何使用服务类中的布局访问ImageView?

Android 如何使用服务类中的布局访问ImageView?,android,service,imageview,Android,Service,Imageview,我想从我的服务类更改ImageView的颜色。但我不知道如何从服务类访问ImageView。 这是我的布局文件: 您不应该而且事实上您不能从服务更改UI,这不是UI线程。。。您必须自定义实现,然后从服务向活动发送一条类似的消息,这可以进行可视更改(在UI线程中) 另一种方法是使用LocalBroadcastManager并从服务发送广播,在活动中收听广播(在生命周期中注册/注销接收器),然后更改用户界面 您不能直接从服务访问布局/视图。为了实现这一点,您的活动应该有一种与您的服务沟通的方式,反

我想从我的服务类更改ImageView的颜色。但我不知道如何从服务类访问ImageView。 这是我的布局文件:


您不应该而且事实上您不能从
服务更改UI
,这不是UI线程。。。您必须自定义实现,然后从
服务
活动
发送一条类似的消息,这可以进行可视更改(在UI线程中)


另一种方法是使用
LocalBroadcastManager
并从
服务
发送广播,在
活动
中收听广播(在生命周期中注册/注销接收器),然后更改用户界面

您不能直接从服务访问布局/视图。为了实现这一点,您的活动应该有一种与您的服务沟通的方式,反之亦然。从该服务中,您必须触发活动的方法/代码以更新图像视图的颜色/色调


有几种方法可以设置服务和活动之间的通信。一种简单的方法是在活动中使用广播接收器,该接收器可通过创建广播由服务触发。

对于服务和活动之间的通信,您可以使用事件总线库, 请查看下面的链接

签出此项不,这不是我想要的。
从服务类访问ImageView
您不应该这样做。只有创建视图的对象才能访问它。你能做的就是让它改变ImageView。好的,谢谢你的回答,你能告诉我,如果我想在主活动课上做同样的事情,我怎么做。正如您在我的版面中看到的,我没有为我的ImageView提供任何id,因此如何使用版面名称访问它。我的应用程序有15个以上的版面,因此我没有为任何版面ImageView提供任何id。但我想根据用户首选项更改它们的颜色,并且一个版面对用户只可见一次。布局就像设计一样,可以根据用户的喜好进行更改。您应该为这些
ImageView
s(以及您想要访问的其他
View
s)提供唯一的ID,然后在
活动中使用
findViewById
。这是访问充气视图的最简单方法。请看我的这个堆栈问题,并帮助我解决它。很抱歉打扰你,但我现在真的需要帮助。