level 9
望海潮妙手空空
楼主
开讲之前,先播放所歌,慢慢欣赏,慢慢听讲。嘎嘎……
开讲咯!!
用过Android的AlertDialog的都知道,当实现一个AlertDialog后,无论我们点击AlertDialog中按钮后,有没有去调用dismiss方法,系统也会默认的去调用,而把这个AlertDialog对话框关闭掉。但是我们的一些实际需求中,有很多需要保留其对话框不关闭,例如:当要点击按钮后清空输入框的内容,总不能点击后就让其给自动关闭了,再重新弹出AlertDialog对华框,再输入吧,这便变的很变扭,不符合我们的需求。那该如何去解决这一问题呢???
首先让我来了解下,系统中dismiss方法中内容,以便来解决这一个问题。
我们可以追踪到AlertDialog的父类Dialog的源代码中去,这时我们可以看到dismiss方法查看其源代码,我们会发现调用dismiss方法时,dismiss会去调用dismissDialog方法来关闭对话框,dismissDialog方法的代码如下:

从代码中我们可以知道系统是通过mShowing变量就是判断对话框是否已关闭的。因此,我们在代码中通过设置这个变量就可以使系统认为对话框已经关闭,就不再继续关闭对话框了。
但是mShowing是系统中变量同时也是private变量,那我们该怎么去改变它的值呢!这就需要用到上次我提到过的反射机制了。(https://tieba.baidu.com/p/2286481551?pid=31862362877&cid=#31862362877,这只是稍微提到过,具体的大家去另外了解,不多解释)。
解决方法,代码如下:

今天的讲解,到此结束,谢谢!!!
2013年05月18日 05点05分
1
开讲咯!!
用过Android的AlertDialog的都知道,当实现一个AlertDialog后,无论我们点击AlertDialog中按钮后,有没有去调用dismiss方法,系统也会默认的去调用,而把这个AlertDialog对话框关闭掉。但是我们的一些实际需求中,有很多需要保留其对话框不关闭,例如:当要点击按钮后清空输入框的内容,总不能点击后就让其给自动关闭了,再重新弹出AlertDialog对华框,再输入吧,这便变的很变扭,不符合我们的需求。那该如何去解决这一问题呢???
首先让我来了解下,系统中dismiss方法中内容,以便来解决这一个问题。
我们可以追踪到AlertDialog的父类Dialog的源代码中去,这时我们可以看到dismiss方法查看其源代码,我们会发现调用dismiss方法时,dismiss会去调用dismissDialog方法来关闭对话框,dismissDialog方法的代码如下:

从代码中我们可以知道系统是通过mShowing变量就是判断对话框是否已关闭的。因此,我们在代码中通过设置这个变量就可以使系统认为对话框已经关闭,就不再继续关闭对话框了。但是mShowing是系统中变量同时也是private变量,那我们该怎么去改变它的值呢!这就需要用到上次我提到过的反射机制了。(https://tieba.baidu.com/p/2286481551?pid=31862362877&cid=#31862362877,这只是稍微提到过,具体的大家去另外了解,不多解释)。
解决方法,代码如下:

今天的讲解,到此结束,谢谢!!!