作者QQ29 (我爱阿蓉)
看板AndroidDev
标题[问题] UI 物件 存取方式?
时间Sun Dec 29 00:51:55 2013
大家好
最近开始接触android
有一个比较关於 design上的问题请教各位
常常会在非activity的class内需要update UI element.
这时候这个ui element物件从哪来的?? 到底该怎麽设计会比较优雅
假设receiver收到intent後要更新ui
我自己想到的方式有以下几个
1.无脑把receiver写在Activity inner class, 这样也不用刻意传递ui 物件
想存取谁就存取谁, 但这时又想到 若这receiver有可能会存取 另一个activity底下的ui
这样就不能写在inner class了??
2. Activity new 一个Handler 和对应要执行的Runnable物件到receiver里面
等到收到intent後 直接执行post 让他去跑我的Runnable(当然这runnable又要写在inner)
感觉这比1 漂亮一些...
3. 把所有Activity用到的UI 物件都抽出来到一个class内 例如
class Activity1UI{static public TextView t;.....}
class Activity2UI{......}
这样不管是要在哪里存取哪个activity的UI 都直接存static物件取得
但这方法我自己觉得是要刻意判断这物件是不是null(刚好activity并不存在的情况)
4. 当然就是最苦力的 class要存取哪个ui 就在constructor开介面让使用的人传进来
但这个写法就很不弹性了...新增或是删除ui 都要改很多地方...
以上是我新手能想到的方法@@
请问各位告诉我有什麽好方式或是standard pattern可以学习的
请指教
谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 180.218.216.157
1F:→ gn00742754:非Activity Class中写event listener,建构的时候传 12/29 04:15
2F:→ gn00742754:实作近来 12/29 04:15
3F:→ QQ29:listener在java也只是自己开界面传物件,这样等於listener也 12/29 11:23
4F:→ QQ29:会遇到我问的问题吧?除非activity本身就是listener,但这样架 12/29 11:23
5F:→ QQ29:构变很怪 12/29 11:23
6F:推 sdyy:用一 在onresume注册 onpause注销 就好啦 12/29 11:33
7F:推 tac0wu:你的意思是想一个reciver instance控制复数个Activity? 12/29 15:06
8F:→ tac0wu:receiver 12/29 15:07
9F:→ tac0wu:这我第一个想到就是 memory leak 的问题 12/29 15:07
10F:→ tac0wu:如果你只是想做receiver 跟其他被控制物件的decouple 12/29 15:09
11F:→ tac0wu:就用 listenner 的作法即可 12/29 15:09
12F:推 tac0wu:基本上你的问题 通常就是用delegation 来解 12/29 15:26
13F:推 aimw0202:还蛮多的 可用database、sharepreference、static(注意me 12/29 17:36
14F:→ aimw0202:morey就好) Listener也可,receiver缺点是有时候收太慢 12/29 17:38
15F:→ QQ29:receiver只是我举例,主要是想问非activity的class想存取ui, 12/29 23:55
16F:→ QQ29:该怎让这class使用呢?例如asynctask之类的 12/29 23:55
17F:→ QQ29:传listener这listener也是会有需要存取ui的需求,除非写在inn 12/29 23:58
18F:→ QQ29:er class但总觉得都写在inner 似乎不是个好design 12/29 23:58
19F:推 tac0wu:你会觉得onclick listener 很怪吗 12/30 00:11
20F:推 tac0wu:你的class declare 一个inner public interface 12/30 00:15
21F:推 tac0wu:.在activity implement 後传近去 12/30 00:16
22F:推 typepeter:还满多Android系统自己的Class,都写一堆inner class 12/30 00:18
23F:推 tac0wu:基本上android 用这种方式做decouple 很常见喔 12/30 00:18
24F:→ typepeter:如果觉得太怪的话 可以看看Google怎麽写的:P 12/30 00:18
25F:推 gpc5566:inner class很正常 ANDROID都这样 跟M$不一样... 12/30 14:37
26F:推 gpc5566:不然你再用UI listener还要多弄一个class装吗 12/30 14:40
27F:→ QQ29:java有类似c# partial class写法吗,想分档案写,怕一个class 12/31 02:06
28F:→ QQ29:再一个档案过大 12/31 02:06
29F:→ quare96:你可以看看roboGuice, 这课题我之前研究过 01/03 13:46