1DialogFragment的cancelable问题
setCancelable (boolean flag)和setCanceledOnTouchOutside (boolean cancel),这两个方法想必大家耳详能熟了,在Dialog的使用中经常会遇到,前者用于控制按下返回键时是否取消对话框,后者用于控制点击空白处时是否取消对话框。
在API 11之后,系统引入了DialogFragment类,用于替换原有的Dialog类,至于它的好处不是本系列的重点。这里要说明的是,通过DialogFragment类的getDailog方法可以获取到Dialog对象。
通过这个Dialog可以控制DialogFragment的取消状态。但是殊不知,Dialog Fragment类本身提供了一个setCancelable (boolean cancelable)方法,替代掉了Dialog的setCancelable (boolean cancelable)方法,如果你还在使用Dialog的这个方法,将出现设置无效的问题,而对于setCanceledOnTouchOutside (boolean cancel),DialogFragment没有提供替代方案,大家实际开发中需要注意,官方文档介绍如下:
2getDrawable获取资源问题
在Android代码中获取资源,第一反应会是context.getDrawable (int id)方法,但是如果的编译环境处于API 22或以上,会显示废弃标志,并提示: Resource has unresolved theme attributes,查看官网文档如下:
可以看出,在API 22时已经废弃掉了,注意Note提示信息,大致意思是由于资源别名的问题可能会出现获取资源错误,推荐使用getDrawable (int id, Resources.Theme theme)方法,但是你会发现,这个方法必须在API 21及以上版本使用,所以存在版本兼容问题。
解决方案:如果仅仅是设置背景资源的情况,可以通过setBackgroundResource方法;其他情况下,可以通过Context的兼容类ContextCompact实现,最小支持API 4,所以可以放心大胆地使用。
BugDay 一天少一点Bug
BugDay是[技术鸟]公众号新开启的Android开发系列文章,致力于纪录每天编程工作中遇到并解决的实际问题,以最精炼的语言,集火于最核心的问题,真正地实现[Mark,一天少一点Bug]的编程梦想。
友情推荐
FRIENDLY
专注程序员的编程知识,原创教程,最新动态等。现在是编程的黄金时代,是程序员的ShowTime。我们不是码农,不是屌丝,也不是程序猿,我们是程序员联盟
微信ID:ProgrammerLeague
热门精选
☞ 如何向外行解释产品经理频繁更改需求为什么会令程序员烦恼?
阅读原文 查看【更多精彩】!