前些天在开发过程中遇到一个问题,在CSDN和cnblogs都问了这个问题。CSDN:http://bbs.csdn.net/topics/392053546 cnblogs:https://q.cnblogs.com/q/88432/
第一次在CSDN提问,第二天就有好几个人给我回复。感受到了CSDN浓浓的讨论氛围和数量庞大的开发人员。在这里还是要感谢给我回复的兄弟。
关于提问, 关键就是在后台数据处理线程里有数据要在当前界面使用AlertDialog弹窗显示出来。程序运行起来后,就不知道当前界面是哪个界面了。如果直接在后台进程里写 AlertDialog al = new AlertDialog(); al.show()这样写首先就有个问题,需要对应界面的Context。如果用静态变量保存主界面的Context,编译没错,运行就会出错。试过的人都知道什么问题。
多人给我了回复,但我应该找到了一种新的方法(或者是我无知,就是他们说的方法),个人感觉,因为没经验,我做出来的方法感觉都是奇技淫巧了,呵呵。大体方法是,利用Handler消息机制给MainActivity(主界面,程序运行起来后,此对象是一直存在的),同时,使用ArrayList进栈出栈式的保存删除当前显示界面(设计成一个类,方法设计成静态的。这样在Handler的消息处理里需要获得当前最上层显示界面的Context时就可以直接从List里取。再调用AlertDialog的API,一切就OK了。