这个问题stackoverflow上已经了答案,地址:点击打开链接
需要说明的是,仅仅使用该代码在4.3以上系统是有问题的(该问题下的第二个回答已经说了,4.3以上系统已经修复了bug,我自己看了下sdk源码,确实已经修复了),简单的做法就是在原代码上再加入 4.3以上系统的判断:
//4.0以下需要主动调用点击;4.3以上已经修复了该bug,但由于本hack,也需要再调用一次
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.ICE_CREAM_SANDWICH)
d.onClick(dialog, which);
else if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2)
d.onClick(dialog, which);
更好的做法则是 只针对4.0到4.3 执行hack,具体就不细表了。