作者d93n8311 (d93n8311)
看板AndroidDev
标题[问题] arraylist内容
时间Wed Sep 9 13:30:33 2015
http://pastebin.com/aATXzZFZ
这是我的程式码,底下是Log内容
我想请问一下为何我在try catch中可以抓到我需要的东西并add进我的ArrayList内
Log中也能看见name.add()确实有执行。
在listener中的name.isempty()也确实不为空(我有把内容印出来过确定也没问题)
但是在底下那行txt.setView(name.isempty())就会印出true
(我也印过name.toString确实为空)
有办法能让name在listener外也不为空吗?
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 220.134.187.188
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/AndroidDev/M.1441776636.A.5BA.html
1F:→ corrupt003: 你自己在setText那麽也加log看是哪时候印出来就知道了 09/09 13:43
2F:→ corrupt003: 那麽 --> 那边 09/09 13:44
3F:→ corrupt003: listener里的 onResponse是在setText後才执行 09/09 13:45
4F:→ d93n8311: 现在问题是listener里面的name没问题 但是同一个name 09/09 13:47
5F:→ d93n8311: 到了listener外面就空了 09/09 13:47
6F:→ passli: 就是执行的顺序问题 你先txt.setText 然後才送request 09/09 13:58
7F:推 jknm0510a: Response是一个thread,程式不会等thread完成才做sette 09/09 13:59
8F:→ d93n8311: 我将mQueue.add(req)移动到setText前也是empty 09/09 14:00
9F:→ jknm0510a: ,所以你要把setText写在里面,但是又会产生UIThread 09/09 14:00
10F:→ jknm0510a: 的问题 09/09 14:00
11F:→ d93n8311: 看来是我对它的理解有误Q_Q 09/09 14:01
12F:推 jknm0510a: 总而言之你要在try的後面用handler等方法回到UIThread 09/09 14:02
13F:→ jknm0510a: 然後在UIThread内做setText动作 09/09 14:03
14F:→ passli: 写在里面,加上 Activity.runOnUiThread 就可以解决了 09/09 14:03
15F:→ mshockwave: 因为它的request是async的,你要在onResponse里用hand 09/09 14:58
16F:→ mshockwave: ler把讯息更新到ui 09/09 14:58
17F:→ d93n8311: 谢谢各位 我大致了解问题在哪了 09/09 15:13
18F:推 panjiongkai: name 宣告final 还可以变动? 09/09 15:16
19F:→ d93n8311: 我後来把它拉去全域变数就改掉了 09/09 15:24
20F:→ d93n8311: 如果宣告在OnCreate里面它就会说要宣告成final才可以用 09/09 15:25
21F:→ d93n8311: 我也不是很了解原因 09/09 15:25
22F:→ y3k: 宣告成final的意思可以视为"不可以再拿去等於其他东西" 09/09 22:33
23F:推 jknm0510a: 应该是你要拿进thread内的变数要宣告成final,不能再修 09/10 00:24
24F:→ jknm0510a: 这是一个保障thread安全性的限制 09/10 00:24
25F:→ ssccg: 不是thread的关系,是方法中的匿名类别的关系 09/10 02:13
26F:→ ssccg: inner class会保有enclosing class的object reference 09/10 02:14
27F:→ ssccg: 但method中的变数在method结束就没了,所以实作是会copy一 09/10 02:16
28F:→ ssccg: 份到inner class里,所以原本的宣告要求final,才不会跟 09/10 02:16
29F:→ ssccg: copy过去的不一致 09/10 02:16
30F:→ ssccg: 不在method中的class field就没这限制 09/10 02:17
31F:推 jknm0510a: 喔!受教了,感谢 09/10 09:22