首页 > 代码库 > android 2.x上Dialog特定情况导致无法dismiss的bug
android 2.x上Dialog特定情况导致无法dismiss的bug
最近在做一个简单的对话框框架,作用仅仅是做出一个显示效果在android 2.x到android 4.x上均类似的对话框.
思路比较简单,就是使用装饰模式包裹Dialog,暴露的接口调用时会自动完成一些设置
但是遇到一个特别诡异的问题,在android 2.x上的Dialog对话框无法被dismiss,只要弹出来界面就卡死,强行使用eclipse重新run的话会导致android设备黑屏无响应,如果是模拟器,则直接崩溃,看到启动画面.而且这个还不是ANR错误.
后来通过删减代码找到了问题的源头,这也是最不可能被怀疑的地方.在style.xml中我定义了一个对话框用的style,继承@android:style/Theme.Dialog
<style name="Shalog" parent="@android:style/Theme.Dialog"> <item name="android:windowAnimationStyle">@style/ShalogAnimation</item> </style>
问题就出在这个android:windowAnimationStyle属性上,我给这个属性定义的ShalogAnimation给Dialog进入和退出分别设置了alpha动画,alpha动画在API 11及以上才支持,也就是android 3.0及以上版本.即便是这样,我还是无法理解这个问题.
我记得android对xml中不支持的内容是直接忽略的,所以理论上这个动画被忽略了才对,然而实际上却能让android整个系统崩溃掉,非常诡异.
如果换用translate动画,则表现正常.
我在stackoverflow上问了,暂时还没有人回答,他们有人评论说为什么还要兼容android 4.0以下版本.嗯,我以后绝对拒绝兼容.
这应该是个bug.如果有谁了解欢迎评论批评指正.
android 2.x上Dialog特定情况导致无法dismiss的bug
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。