2 qq 30130435 qq_30130435 于 2016.02.17 16:59 提问

Android中能在一个自定义view中注册广播并发出广播吗

我写的一个Android程序中自定义了一个view,自己画了一个钟表,那个钟表可以调时间,因为调时间的过程中数据是不停的变化的,我想让这变化不停的时间显示在自定义view底下的TextView,虽然我写了一个get方法得到时间并显示在textView中,到get方法只执行了一次,所以并没有变化更新效果,所以我想法是在自定义view中发送广播,只要是表在调整就一直发送最新数据,可是好广播一直报错,是不是广播只能在activity中才能发送,或者各位大神有更好的思路吗?

6个回答

leilba
leilba   Rxr 2016.02.17 17:09
已采纳

可以在view里面发广播的,,
view里面不是有一个:public ViewName(Context context){} 这种类型的构造方法吗?
这个Context就是activity,你可以将这个context保存下来。
当你需要发广播的话,可以调用:context.sendBoradCast(..)来发送广播。

qq_30130435
qq_30130435 谢谢!
接近 2 年之前 回复
leilba
leilba 回复qq_30130435: 而且就像其他人说的那样,用广播的话不是最优的方法,最好是用回调,有时间的话你可以学一下,给你个参考:http://www.cnblogs.com/tt_mc/archive/2011/11/09/2243699.html
接近 2 年之前 回复
leilba
leilba 回复qq_30130435: view的构造方法有很多个,你如果是把View放在layout里面的话,那么调用的方法函数是 public ViewName(Context context,AttributeSet attrs){} 这个构造方法
接近 2 年之前 回复
qq_30130435
qq_30130435 我今晚试了下,放在这个构造方法里的context.sendbroadcast()虽然编译无错,但我检查后发现写在里面的任何方法都不会执行,我应该如何写,Android新手,还请指教
接近 2 年之前 回复
qq_30130435
qq_30130435 十分感谢!已经可以调用sendbroadcast
接近 2 年之前 回复
gary16
gary16   2016.02.17 17:07

--------------------应该可以的

qq_26787115
qq_26787115   2016.02.17 17:12

可以的,用context

luochoudan
luochoudan   Ds   Rxr 2016.02.17 17:19

1 用回调试试
2 广播比较重量级,频繁发送不是一个好的选择,但是肯定行,它的引用主体是Context,不局限于Activity。

qq_30130435
qq_30130435 好的!感谢提议!
接近 2 年之前 回复
qq_17250009
qq_17250009   2016.02.17 20:10

重量级广播不太合适,建议在重绘的时候使用接口回调,参数是当前事件

qq_30130435
qq_30130435 好的谢谢!回调我并不熟悉,接触Android不久,还得好好学习。
接近 2 年之前 回复
Mr_dsw
Mr_dsw   Ds   Rxr 2016.02.17 20:20

可以发送广播,需要关联对应的context上下文

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!