首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如果我使用"if (android.os.Build.VERSION.SDK_INT>=11)“,反射是必要的吗?

如果我使用"if (android.os.Build.VERSION.SDK_INT>=11)“,反射是必要的吗?
EN

Stack Overflow用户
提问于 2011-08-01 01:48:07
回答 3查看 14.1K关注 0票数 6

我正在开发一个针对API11 (3.0)的应用程序,但minSDKVersion是7 (2.1)。

我以编程的方式生成PreferenceActivity,而不是使用XML。在Honeycomb中,首选项布局中有一个内置的图标,可以放在每个首选项的旁边。您可以使用prefScreen.setIcon(R.drawable.my_icon);来设置它

所以我不想在API 7-10上这样做。这是否足以防止崩溃?

代码语言:javascript
运行
复制
if (android.os.Build.VERSION.SDK_INT>=11)
    prefScreen.setIcon(R.drawable.myIcon);

据我所知,更复杂的解决方案是在尝试使用该方法之前使用反射来检查该方法是否存在。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-07-11 03:13:59

根据http://developer.android.com/training/basics/activity-lifecycle/starting.html的说法,这意味着在Android2.0和更高版本上使用SDK_INT常量来包装对较新API的调用是安全的,而不使用反射。

警告:只有在Android2.0(API5级)和更高版本上,才能使用SDK_INT阻止旧系统执行新的API。旧版本将遇到运行时异常。

票数 10
EN

Stack Overflow用户

发布于 2014-09-05 06:19:37

这对我很有效:

代码语言:javascript
运行
复制
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.HONEYCOMB){
            //code 
}
票数 2
EN

Stack Overflow用户

发布于 2011-08-01 01:58:06

如果该方法在较低版本的平台上不可用,它将在系统加载文件时崩溃(它甚至不会执行if语句)

您应该看看关于延迟加载的文章,以便在Android Dev Blog上进行反思

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6891176

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档